Submission #6097

# Submission time Handle Problem Language Result Execution time Memory
6097 2014-06-19T19:42:57 Z kriii 역사적 조사 (JOI14_historical) C++
5 / 100
24 ms 3692 KB
#include <stdio.h>
#include <algorithm>
#include <functional>
#include <vector>
#include <map>
#include <set>
using namespace std;

map<int, int> chk;
int N,Q,C,X[100010],O[100010],Z,F; long long R[100010],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];

multiset<long long, greater<long long> > B;

void upt(int x, int p)
{
	x = X[x];
	if (O[x]) B.erase(B.find(R[x]*O[x]));
	O[x] += p;
	if (O[x]) B.insert(R[x]*O[x]);
}

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()){
		int s = 0, e = 0; B.clear();
		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.begin();
		}
	}

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

	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 3564 KB Output is correct
2 Correct 0 ms 3564 KB Output is correct
3 Correct 0 ms 3564 KB Output is correct
4 Correct 0 ms 3564 KB Output is correct
5 Correct 0 ms 3564 KB Output is correct
6 Correct 0 ms 3564 KB Output is correct
7 Correct 0 ms 3564 KB Output is correct
8 Correct 0 ms 3564 KB Output is correct
9 Correct 0 ms 3564 KB Output is correct
10 Correct 0 ms 3564 KB Output is correct
11 Correct 0 ms 3564 KB Output is correct
12 Correct 0 ms 3564 KB Output is correct
13 Correct 0 ms 3564 KB Output is correct
14 Correct 0 ms 3564 KB Output is correct
15 Correct 0 ms 3564 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 3564 KB Output is correct
2 Correct 4 ms 3564 KB Output is correct
3 Correct 24 ms 3564 KB Output is correct
4 Runtime error 24 ms 3560 KB open (syscall #2) was called by the program (disallowed syscall)
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 3564 KB Output is correct
2 Correct 0 ms 3564 KB Output is correct
3 Correct 0 ms 3564 KB Output is correct
4 Correct 0 ms 3564 KB Output is correct
5 Runtime error 0 ms 3560 KB open (syscall #2) was called by the program (disallowed syscall)
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 8 ms 3692 KB open (syscall #2) was called by the program (disallowed syscall)
2 Halted 0 ms 0 KB -