Submission #2192

# Submission time Handle Problem Language Result Execution time Memory
2192 2013-07-20T09:03:58 Z kriii Jousting tournament (IOI12_tournament) C++
100 / 100
53 ms 4616 KB
const int Z = 1 << 17;
int next[Z],cnt[Z*2];

int getnth(int n)
{
	int x = 1;

	while (x < Z){
		x <<= 1;
		if (cnt[x] < n) n -= cnt[x++];
	}

	return x - Z;
}

void up(int x, int p)
{
	x += Z;
	while (x){
		cnt[x] += p;
		x >>= 1;
	}
}

int add[Z],res[Z];

int GetBestPosition(int N, int C, int R, int *K, int *S, int *E) {
	int i,peo,x,y;

	for (i=0;i<N;i++) next[i] = i+1, cnt[i+Z] = 1;
	for (i=Z-1;i>=1;i--) cnt[i] = cnt[i*2] + cnt[i*2+1];
	
	for (i=0;i<C;i++){
		peo = E[i] - S[i] + 1;
		S[i] = x = getnth(S[i]+1);
		up(x,1);
		while (peo--){
			up(x,-1);
			x = next[x];
		}
		E[i] = x - 1;
		next[S[i]] = x;
	}

	for (i=1;i<N;i++) add[i] = K[i-1] > R;
	for (i=1;i<N;i++) add[i] += add[i-1];

	for (i=0;i<C;i++){
		if (add[E[i]] - add[S[i]] == 0){
			res[S[i]]++;
			res[E[i]]--;
		}
	}

	int s = 0, p = -1, ind;
	for (i=0;i<N;i++){
		s += res[i];
		if (p < s){
			p = s; ind = i;
		}
	}

	return ind;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 3472 KB Output is correct
2 Correct 0 ms 3472 KB Output is correct
3 Correct 0 ms 3472 KB Output is correct
4 Correct 0 ms 3472 KB Output is correct
5 Correct 0 ms 3472 KB Output is correct
6 Correct 0 ms 3472 KB Output is correct
7 Correct 0 ms 3472 KB Output is correct
8 Correct 0 ms 3472 KB Output is correct
9 Correct 0 ms 3472 KB Output is correct
10 Correct 0 ms 3472 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 3472 KB Output is correct
2 Correct 2 ms 3472 KB Output is correct
3 Correct 0 ms 3472 KB Output is correct
4 Correct 3 ms 3472 KB Output is correct
5 Correct 3 ms 3472 KB Output is correct
6 Correct 2 ms 3472 KB Output is correct
7 Correct 1 ms 3472 KB Output is correct
8 Correct 1 ms 3472 KB Output is correct
9 Correct 0 ms 3472 KB Output is correct
10 Correct 3 ms 3472 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 21 ms 3916 KB Output is correct
2 Correct 53 ms 4616 KB Output is correct
3 Correct 21 ms 3864 KB Output is correct
4 Correct 49 ms 4616 KB Output is correct
5 Correct 49 ms 4580 KB Output is correct
6 Correct 47 ms 4352 KB Output is correct
7 Correct 50 ms 4616 KB Output is correct
8 Correct 50 ms 4616 KB Output is correct
9 Correct 18 ms 3864 KB Output is correct
10 Correct 20 ms 3864 KB Output is correct