답안 #6096

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
6096 2014-06-19T19:38:32 Z kriii 역사적 조사 (JOI14_historical) C++
15 / 100
4000 ms 9632 KB
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;

map<int, int> chk;
int N,Q,C,X[100010],O[100010],Z,F; long long R[100010],B[100100],A[100010];

struct seg{
	seg(int s_, int e_, int i_){s = s_; e = e_; i = i_;}
	int s,e,i;
	bool operator <(const seg t)const{return s == t.s ? e < t.e : s < t.s;}
};
vector<seg> intv[201];

void upt(int x, int p)
{
	x = X[x]; O[x] += p;
	B[x+F] = R[x] * O[x];
	x = (x + F + 2) / 4;
	while (x){
		B[x] = max(max(B[x*4-2],B[x*4-1]),max(B[x*4],B[x*4+1]));
		x = (x + 2) / 4;
	}
}

int main()
{
	scanf ("%d %d",&N,&Q);
	for (int i=0;i<N;i++){
		scanf ("%d",&X[i]);
		chk[X[i]] = 0;
	}
	
	for (map<int, int>::iterator I = chk.begin(); I != chk.end(); I++) R[C] = I->first, I->second = C++;
	for (int i=0;i<N;i++) X[i] = chk[X[i]];
	for (Z=1;Z<C;Z<<=2) F += Z; F++;

	for (int i=0,s,e;i<Q;i++){
		scanf ("%d %d",&s,&e); s--;
		intv[s/1000+e/1000].push_back(seg(s,e,i));
	}
	for (int i=0;i<200;i++) if (!intv[i].empty()){
		for (int k=0;k<C;k++) O[k] = B[F+k] = 0; B[1] = 0;
		int s = 0, e = 0;
		sort(intv[i].begin(),intv[i].end());
		for (int j=0;j<intv[i].size();j++){
			while (e < intv[i][j].e) upt(e++,1);
			while (e > intv[i][j].e) upt(--e,-1);
			while (s < intv[i][j].s) upt(s++,-1);
			A[intv[i][j].i] = B[1];
		}
	}

	for (int i=0;i<Q;i++) printf ("%lld\n",A[i]);

	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 4344 KB Output is correct
2 Correct 0 ms 4344 KB Output is correct
3 Correct 0 ms 4344 KB Output is correct
4 Correct 0 ms 4344 KB Output is correct
5 Correct 0 ms 4344 KB Output is correct
6 Correct 0 ms 4344 KB Output is correct
7 Correct 0 ms 4344 KB Output is correct
8 Correct 0 ms 4344 KB Output is correct
9 Correct 0 ms 4344 KB Output is correct
10 Correct 0 ms 4344 KB Output is correct
11 Correct 0 ms 4344 KB Output is correct
12 Correct 0 ms 4344 KB Output is correct
13 Correct 0 ms 4344 KB Output is correct
14 Correct 0 ms 4344 KB Output is correct
15 Correct 0 ms 4344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 4344 KB Output is correct
2 Correct 0 ms 4344 KB Output is correct
3 Correct 4 ms 4344 KB Output is correct
4 Correct 8 ms 4344 KB Output is correct
5 Correct 32 ms 4344 KB Output is correct
6 Correct 56 ms 4344 KB Output is correct
7 Correct 56 ms 4480 KB Output is correct
8 Correct 44 ms 4344 KB Output is correct
9 Correct 44 ms 4344 KB Output is correct
10 Correct 80 ms 4484 KB Output is correct
11 Correct 76 ms 4484 KB Output is correct
12 Correct 76 ms 4480 KB Output is correct
13 Correct 76 ms 4476 KB Output is correct
14 Correct 68 ms 4476 KB Output is correct
15 Correct 68 ms 4480 KB Output is correct
16 Correct 56 ms 4344 KB Output is correct
17 Correct 24 ms 4344 KB Output is correct
18 Correct 68 ms 4484 KB Output is correct
19 Correct 80 ms 4476 KB Output is correct
20 Correct 80 ms 4480 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 4344 KB Output is correct
2 Correct 0 ms 4344 KB Output is correct
3 Correct 0 ms 4344 KB Output is correct
4 Correct 0 ms 4344 KB Output is correct
5 Correct 0 ms 4344 KB Output is correct
6 Correct 0 ms 4344 KB Output is correct
7 Correct 4 ms 4344 KB Output is correct
8 Correct 12 ms 4476 KB Output is correct
9 Correct 76 ms 4608 KB Output is correct
10 Correct 72 ms 4344 KB Output is correct
11 Correct 584 ms 5796 KB Output is correct
12 Correct 256 ms 4344 KB Output is correct
13 Correct 1200 ms 5004 KB Output is correct
14 Correct 1716 ms 6984 KB Output is correct
15 Correct 1776 ms 8308 KB Output is correct
16 Incorrect 1060 ms 9632 KB Output isn't correct
17 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 124 ms 4476 KB Output is correct
2 Correct 320 ms 4616 KB Output is correct
3 Correct 720 ms 5008 KB Output is correct
4 Correct 1100 ms 5540 KB Output is correct
5 Correct 1504 ms 5804 KB Output is correct
6 Correct 1728 ms 5544 KB Output is correct
7 Correct 1528 ms 5532 KB Output is correct
8 Correct 1520 ms 5672 KB Output is correct
9 Correct 1096 ms 5800 KB Output is correct
10 Correct 860 ms 6068 KB Output is correct
11 Correct 1668 ms 6064 KB Output is correct
12 Correct 2532 ms 5944 KB Output is correct
13 Correct 3592 ms 6204 KB Output is correct
14 Execution timed out 4000 ms 7520 KB Program timed out
15 Halted 0 ms 0 KB -