Submission #6836

# Submission time Handle Problem Language Result Execution time Memory
6836 2014-07-08T04:22:33 Z gs12117 역사적 조사 (JOI14_historical) C++
40 / 100
4000 ms 7436 KB
#include<stdio.h>
#include<algorithm>
#define BSIZ 300
int n,q;
int x[100100];
struct sn{
	int loc,val;
	bool operator<(const sn&r)const{
		return val<r.val;
	}
};
sn st[100100];
int a[100100];
int cpr[100100];
int qry[100100][2];
long long int ans[100100];
long long int sv[100100];
int cprn;
long long int it[1<<18];
void push(int loc,long long int val){
	loc+=1<<17;
	it[loc]=val;
	loc/=2;
	while(loc!=0){
		if(it[loc*2]>it[loc*2+1]){
			it[loc]=it[loc*2];
		}
		else{
			it[loc]=it[loc*2+1];
		}
		loc/=2;
	}
}
long long int calc(){
	return it[1];
}
int main(){
	int i,j,k,p,bf;
	scanf("%d%d",&n,&q);
	for(i=0;i<n;i++){
		scanf("%d",&x[i]);
		st[i].val=x[i];
		st[i].loc=i;
	}
	std::sort(st,st+n);
	for(i=0;i<n;i++){
		a[st[i].loc]=cprn;
		if(i==n-1||st[i].val!=st[i+1].val){
			cpr[cprn]=st[i].val;
			cprn++;
		}
	}
	for(i=0;i<q;i++){
		scanf("%d%d",&qry[i][0],&qry[i][1]);
		qry[i][0]--;
		qry[i][1]--;
		st[i].loc=i;
		st[i].val=qry[i][1];
	}
	std::sort(st,st+q);
	for(i=0;i<=(n-1)/BSIZ;i++){
		bf=i*BSIZ;
		for(j=0;j<q;j++){
			p=st[j].loc;
			if(qry[p][0]/BSIZ==i){
				for(k=bf;k<=qry[p][1];k++){
					sv[a[k]]+=cpr[a[k]];
					push(a[k],sv[a[k]]);
				}
				bf=qry[p][1]+1;
				for(k=i*BSIZ;k<qry[p][0];k++){
					sv[a[k]]-=cpr[a[k]];
					push(a[k],sv[a[k]]);
				}
				ans[p]=calc();
				for(k=i*BSIZ;k<qry[p][0];k++){
					sv[a[k]]+=cpr[a[k]];
					push(a[k],sv[a[k]]);
				}
			}
		}
		for(k=0;k<cprn;k++){
			if(sv[k]==0)continue;
			sv[k]=0;
			push(k,0);
		}
	}
	for(i=0;i<q;i++){
		printf("%lld\n",ans[i]);
	}
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 7436 KB Output is correct
2 Correct 0 ms 7436 KB Output is correct
3 Correct 0 ms 7436 KB Output is correct
4 Correct 0 ms 7436 KB Output is correct
5 Correct 0 ms 7436 KB Output is correct
6 Correct 0 ms 7436 KB Output is correct
7 Correct 0 ms 7436 KB Output is correct
8 Correct 0 ms 7436 KB Output is correct
9 Correct 0 ms 7436 KB Output is correct
10 Correct 0 ms 7436 KB Output is correct
11 Correct 0 ms 7436 KB Output is correct
12 Correct 0 ms 7436 KB Output is correct
13 Correct 0 ms 7436 KB Output is correct
14 Correct 0 ms 7436 KB Output is correct
15 Correct 0 ms 7436 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 7436 KB Output is correct
2 Correct 4 ms 7436 KB Output is correct
3 Correct 16 ms 7436 KB Output is correct
4 Correct 36 ms 7436 KB Output is correct
5 Correct 76 ms 7436 KB Output is correct
6 Correct 116 ms 7436 KB Output is correct
7 Correct 116 ms 7436 KB Output is correct
8 Correct 104 ms 7436 KB Output is correct
9 Correct 104 ms 7436 KB Output is correct
10 Correct 148 ms 7436 KB Output is correct
11 Correct 136 ms 7436 KB Output is correct
12 Correct 156 ms 7436 KB Output is correct
13 Correct 140 ms 7436 KB Output is correct
14 Correct 136 ms 7436 KB Output is correct
15 Correct 140 ms 7436 KB Output is correct
16 Correct 104 ms 7436 KB Output is correct
17 Correct 100 ms 7436 KB Output is correct
18 Correct 140 ms 7436 KB Output is correct
19 Correct 148 ms 7436 KB Output is correct
20 Correct 140 ms 7436 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 7436 KB Output is correct
2 Correct 0 ms 7436 KB Output is correct
3 Correct 0 ms 7436 KB Output is correct
4 Correct 0 ms 7436 KB Output is correct
5 Correct 24 ms 7436 KB Output is correct
6 Correct 4 ms 7436 KB Output is correct
7 Correct 8 ms 7436 KB Output is correct
8 Correct 8 ms 7436 KB Output is correct
9 Correct 20 ms 7436 KB Output is correct
10 Correct 24 ms 7436 KB Output is correct
11 Correct 1756 ms 7436 KB Output is correct
12 Correct 68 ms 7436 KB Output is correct
13 Correct 684 ms 7436 KB Output is correct
14 Correct 1568 ms 7436 KB Output is correct
15 Correct 3084 ms 7436 KB Output is correct
16 Correct 2836 ms 7436 KB Output is correct
17 Correct 1084 ms 7436 KB Output is correct
18 Correct 1940 ms 7436 KB Output is correct
19 Correct 2700 ms 7436 KB Output is correct
20 Correct 1412 ms 7436 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 220 ms 7436 KB Output is correct
2 Correct 596 ms 7436 KB Output is correct
3 Correct 1184 ms 7436 KB Output is correct
4 Correct 1860 ms 7436 KB Output is correct
5 Correct 2472 ms 7436 KB Output is correct
6 Correct 2868 ms 7436 KB Output is correct
7 Correct 2572 ms 7436 KB Output is correct
8 Correct 2528 ms 7436 KB Output is correct
9 Correct 2764 ms 7436 KB Output is correct
10 Correct 2944 ms 7436 KB Output is correct
11 Correct 3220 ms 7436 KB Output is correct
12 Execution timed out 4000 ms 7436 KB Program timed out
13 Halted 0 ms 0 KB -