답안 #5908

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
5908 2014-05-22T11:36:38 Z cki86201 역사적 조사 (JOI14_historical) C++
40 / 100
4000 ms 11888 KB
#include<stdio.h>
#include<math.h>
#include<algorithm>
#include<map>
#include<set>
using namespace std;

typedef long long ll;

int n, k, qu;
ll ans[100010];
int p[100010];
map <int,int> M;
multiset <ll> S;

struct qua{
	qua(){}
	qua(int s,int d):s(s),d(d){}
	int s, d, c;
	bool operator<(const qua &l)const{
		return d/k != l.d/k ? d/k < l.d/k : ((d/k)&1 ? s < l.s : s > l.s);
	}
}q[100010];

int main()
{
	scanf("%d%d",&n,&qu);
	k = int(sqrt(n));
	int i;
	for(i=1;i<=n;i++)scanf("%d",p+i);
	for(i=0;i<qu;i++)scanf("%d%d",&q[i].s,&q[i].d), q[i].c = i;
	sort(q,q+qu);
	int L = 1, R = 0;
	for(i=0;i<qu;i++){
		while(L>q[i].s)S.insert(++M[p[--L]] * (ll)p[L]);
		while(R<q[i].d)S.insert(++M[p[++R]] * (ll)p[R]);
		while(L<q[i].s)S.erase(S.find(M[p[L]]-- * (ll)p[L++]));
		while(R>q[i].d)S.erase(S.find(M[p[R]]-- * (ll)p[R--]));
		ans[q[i].c] = *S.rbegin();
	}
	for(i=0;i<qu;i++)printf("%lld\n",ans[i]);
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 3572 KB Output is correct
2 Correct 0 ms 3572 KB Output is correct
3 Correct 0 ms 3572 KB Output is correct
4 Correct 0 ms 3572 KB Output is correct
5 Correct 0 ms 3572 KB Output is correct
6 Correct 0 ms 3572 KB Output is correct
7 Correct 0 ms 3572 KB Output is correct
8 Correct 0 ms 3572 KB Output is correct
9 Correct 0 ms 3572 KB Output is correct
10 Correct 0 ms 3572 KB Output is correct
11 Correct 0 ms 3572 KB Output is correct
12 Correct 0 ms 3572 KB Output is correct
13 Correct 0 ms 3572 KB Output is correct
14 Correct 0 ms 3572 KB Output is correct
15 Correct 0 ms 3572 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 3572 KB Output is correct
2 Correct 0 ms 3572 KB Output is correct
3 Correct 4 ms 3572 KB Output is correct
4 Correct 8 ms 3572 KB Output is correct
5 Correct 32 ms 3704 KB Output is correct
6 Correct 60 ms 3704 KB Output is correct
7 Correct 68 ms 3704 KB Output is correct
8 Correct 52 ms 3704 KB Output is correct
9 Correct 56 ms 3704 KB Output is correct
10 Correct 80 ms 3836 KB Output is correct
11 Correct 80 ms 3836 KB Output is correct
12 Correct 80 ms 3836 KB Output is correct
13 Correct 80 ms 3836 KB Output is correct
14 Correct 72 ms 3836 KB Output is correct
15 Correct 72 ms 3836 KB Output is correct
16 Correct 56 ms 3704 KB Output is correct
17 Correct 40 ms 3704 KB Output is correct
18 Correct 72 ms 3836 KB Output is correct
19 Correct 84 ms 3836 KB Output is correct
20 Correct 80 ms 3836 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 3572 KB Output is correct
2 Correct 0 ms 3572 KB Output is correct
3 Correct 0 ms 3572 KB Output is correct
4 Correct 0 ms 3572 KB Output is correct
5 Correct 0 ms 3572 KB Output is correct
6 Correct 0 ms 3572 KB Output is correct
7 Correct 4 ms 3572 KB Output is correct
8 Correct 8 ms 3836 KB Output is correct
9 Correct 20 ms 3836 KB Output is correct
10 Correct 16 ms 3704 KB Output is correct
11 Correct 120 ms 3572 KB Output is correct
12 Correct 84 ms 4496 KB Output is correct
13 Correct 148 ms 3836 KB Output is correct
14 Correct 200 ms 5420 KB Output is correct
15 Correct 208 ms 6212 KB Output is correct
16 Correct 260 ms 10568 KB Output is correct
17 Correct 116 ms 6872 KB Output is correct
18 Correct 168 ms 4892 KB Output is correct
19 Correct 164 ms 9116 KB Output is correct
20 Correct 124 ms 11888 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 176 ms 3968 KB Output is correct
2 Correct 716 ms 4496 KB Output is correct
3 Correct 1832 ms 5156 KB Output is correct
4 Correct 3244 ms 5948 KB Output is correct
5 Execution timed out 4000 ms 6608 KB Program timed out
6 Halted 0 ms 0 KB -