Why can't this program pass problem C?(HELP)

Правка en2, от lllooolll, 2019-10-06 14:23:32
Your code here...
#include <bits/stdc++.h>
using namespace std;
const int maxn=1000005;
long long c[maxn], sum[maxn],n,k,m,N=1000000;
vector<pair<int, int> > v[maxn];
int lowbit(int i) { return i&(-i); }
void mo(long long pos,long long dt){
	int s=(long long)dt*pos;
	for (;pos<=N;pos+=lowbit(pos)) {
		c[pos]+=dt;
		sum[pos]+=s;
	}
}
long long find(){
	int ta=k,e=0;
	long long s=0;
	for (int i=20;i>=0;i--) {
		if(e+(1<<i)>N) continue;
		if(c[e+(1<<i)]<ta) {
			ta-=c[e+(1<<i)];
			s+=sum[e+(1<<i)];
			e+=(1<<i);
		}
	}
	if (ta && e+1<=N){
		s+=(long long)ta*(e+1);
	}
	return s;
}
int main(){
	int l,r,c,p;
	cin>>n>>k>>m;
	for (int i=1;i<=m;i++) {
		scanf("%d%d%d%d",&l,&r,&c,&p);
		v[l].push_back(make_pair(c, p));
		v[r+1].push_back(make_pair(-c, p));
	}
	long long sum=0;
	for (int i=1;i<=n;i++){
		for (int j=0;j<v[i].size();j++){
			long long pp=v[i][j].first,pos=v[i][j].second;
			mo(pos,pp);
		}
		sum+=find();
	}
	printf("%d",sum);
}

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en4 Английский lllooolll 2019-10-06 15:55:59 80
en3 Английский lllooolll 2019-10-06 14:25:52 17 Tiny change: '\n~~~~~\nYour code here...\n#include' -> '\n~~~~~\n\n#include'
en2 Английский lllooolll 2019-10-06 14:23:32 39
en1 Английский lllooolll 2019-01-23 05:35:57 1018 Initial revision (published)