#include <bits/stdc++.h>
using namespace std;
#define all(v) v.begin(), v.end()
typedef long long ll;
const int b = 1 << 17;
int n, c, R, k[b], s[b], e[b], seg[b << 1], l, r, seg2[b << 1], p[b];
void upd(int ix){
ix += b;
while(ix){
seg[ix]--; ix /= 2;
}
}
int go(int k){
int ix = 1;
while(ix < b){
ix <<= 1;
if(seg[ix] < k) k -= seg[ix++];
}
return ix - b;
}
int Max(int l, int r){
int ret = 0;
l += b; r += b;
while(l <= r){
if(l & 1) ret = max(ret, seg2[l++]);
if(!(r & 1)) ret = max(ret,seg2[r--]);
l /= 2; r /= 2;
}
return ret;
}
int GetBestPosition(int n, int c, int R, int k[], int s[], int e[]){
for(int i = n - 1; i; i--) k[i] = k[i - 1];
for(int i = 1; i <= n + 1; i++) seg[b + i] = 1, seg2[b + i] = k[i];
for(int i = b - 1; i; i--) {
seg[i] = seg[i * 2] + seg[i * 2 + 1];
seg2[i] = max(seg2[i * 2], seg2[i * 2 + 1]);
}
for(int i = 0; i < c; i++){
l = go(++s[i]); r = go(++e[i] + 1) - 1;
if(Max(l, r - 1) < R) p[l]++, p[r + 1]--;
for(int j = 0; j < e[i] - s[i]; j++) upd(go(s[i] + 1));
}
int idx, ret = -1;
for(int i = 1; i <= n; i++){
p[i] += p[i - 1];
if(p[i] > ret) ret = p[i], idx = i;
}
return idx - 1;
}
/*
int main(void){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n >> c >> r;
for(int i = 1; i < n; i++) cin >> k[i];
for(int i = 0; i < c; i++) cin >> s[i] >> e[i];
cout << GetBestPosition(n, c, r, k, s, e);
return 0;
}*/
Compilation message
tournament.cpp: In function 'int GetBestPosition(int, int, int, int*, int*, int*)':
tournament.cpp:55:18: warning: 'idx' may be used uninitialized in this function [-Wmaybe-uninitialized]
55 | return idx - 1;
| ^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
1236 KB |
Output is correct |
2 |
Correct |
1 ms |
1236 KB |
Output is correct |
3 |
Correct |
1 ms |
1236 KB |
Output is correct |
4 |
Correct |
1 ms |
1236 KB |
Output is correct |
5 |
Correct |
1 ms |
1236 KB |
Output is correct |
6 |
Correct |
1 ms |
1236 KB |
Output is correct |
7 |
Correct |
1 ms |
1236 KB |
Output is correct |
8 |
Correct |
1 ms |
1236 KB |
Output is correct |
9 |
Correct |
1 ms |
1332 KB |
Output is correct |
10 |
Correct |
1 ms |
1236 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
1236 KB |
Output is correct |
2 |
Correct |
3 ms |
1364 KB |
Output is correct |
3 |
Correct |
2 ms |
1364 KB |
Output is correct |
4 |
Correct |
3 ms |
1364 KB |
Output is correct |
5 |
Correct |
3 ms |
1364 KB |
Output is correct |
6 |
Correct |
3 ms |
1364 KB |
Output is correct |
7 |
Correct |
3 ms |
1364 KB |
Output is correct |
8 |
Correct |
3 ms |
1372 KB |
Output is correct |
9 |
Correct |
2 ms |
1364 KB |
Output is correct |
10 |
Correct |
4 ms |
1364 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
23 ms |
2316 KB |
Output is correct |
2 |
Correct |
50 ms |
3628 KB |
Output is correct |
3 |
Correct |
26 ms |
2952 KB |
Output is correct |
4 |
Correct |
50 ms |
3600 KB |
Output is correct |
5 |
Correct |
48 ms |
3560 KB |
Output is correct |
6 |
Correct |
45 ms |
3284 KB |
Output is correct |
7 |
Correct |
49 ms |
3572 KB |
Output is correct |
8 |
Correct |
49 ms |
3664 KB |
Output is correct |
9 |
Correct |
17 ms |
2932 KB |
Output is correct |
10 |
Correct |
20 ms |
2964 KB |
Output is correct |