# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
423900 |
2021-06-11T14:01:36 Z |
MarcoMeijer |
Teams (IOI15_teams) |
C++14 |
|
3851 ms |
155388 KB |
#include "teams.h"
#include <bits/stdc++.h>
using namespace std;
// macros
typedef long long ll;
typedef long double ld;
typedef pair<int, int> ii;
typedef pair<ll, ll> lll;
typedef tuple<int, int, int> iii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<iii> viii;
typedef vector<ll> vll;
typedef vector<lll> vlll;
#define REP(a,b,c) for(int a=int(b); a<int(c); a++)
#define RE(a,c) REP(a,0,c)
#define RE1(a,c) REP(a,1,c+1)
#define REI(a,b,c) REP(a,b,c+1)
#define REV(a,b,c) for(int a=int(c-1); a>=int(b); a--)
#define FOR(a,b) for(auto& a : b)
#define all(a) a.begin(), a.end()
#define INF 1e9
#define EPS 1e-9
#define pb push_back
#define popb pop_back
#define fi first
#define se second
#define sz size()
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
// output
template<class T1, class T2> void OUT(const pair<T1,T2>& x);
template<class T> void OUT(const vector<T>& x);
template<class T> void OUT(const T& x) {cerr << x;}
template<class H, class... T> void OUT(const H& h, const T&... t) {OUT(h); OUT(t...); }
template<class T1, class T2> void OUT(const pair<T1,T2>& x) {OUT(x.fi,' ',x.se);}
template<class T> void OUT(const vector<T>& x) {RE(i,x.size()) OUT(i==0?"":" ",x[i]);}
template<class... T> void OUTL(const T&... t) {OUT(t..., "\n"); }
template<class H> void OUTLS(const H& h) {OUTL(h); }
template<class H, class... T> void OUTLS(const H& h, const T&... t) {OUT(h,' '); OUTLS(t...); }
const int N=(1<<19);
const int MX=N*30;
int n;
int seg[MX], pl[MX], pr[MX], nextSeg=1;
void buildSeg(int p=0, int l=0, int r=N-1) {
seg[p] = 0;
pl[p] = -1;
pr[p] = -1;
int m=(l+r)/2;
if(l == r) return;
pl[p] = nextSeg;
buildSeg(nextSeg++, l , m);
pr[p] = nextSeg;
buildSeg(nextSeg++, m+1, r);
}
int setSeg(int i, int v, int p, int l=0, int r=N-1) {
if(i < l || i > r) return p;
if(l == r) {
seg[nextSeg] = v;
pl[nextSeg] = -1;
pr[nextSeg] = -1;
return nextSeg++;
}
int m=(l+r)/2;
int np = nextSeg++;
pl[np] = setSeg(i,v,pl[p],l ,m);
pr[np] = setSeg(i,v,pr[p],m+1,r);
seg[np] = seg[pl[np]] + seg[pr[np]];
return np;
}
int getSeg(int i, int p, int l=0, int r=N-1) {
if(i > r) return 0;
if(i <= l) return seg[p];
int m = (l+r)/2;
return getSeg(i,pl[p],l,m) + getSeg(i,pr[p],m+1,r);
}
int rt[N];
vi a, b;
vi sa;
vi cnt;
void init(int _n, int A[], int B[]) {
n = _n;
RE(i,n) a.pb(A[i]), b.pb(B[i]);
RE(i,n) sa.pb(i);
sort(all(sa),[](int i, int j) {
return a[i] < a[j];
});
int ci=0;
rt[0] = 0; buildSeg();
cnt.assign(n,0);
RE1(i,n) {
rt[i] = rt[i-1];
while(ci < n && a[sa[ci]] <= i) {
cnt[b[sa[ci]]]++;
rt[i] = setSeg(b[sa[ci]], cnt[b[sa[ci]]], rt[i]);
ci++;
}
}
}
int getRegion(int b1, int a2) {
return getSeg(b1,rt[a2]);
}
int dp[MX];
int can(int m, int k[]) {
sort(k,k+m);
if(m >= 900) {
priority_queue<int,vi,greater<int>> pq;
int ci = 0;
RE(i,m) {
while(ci != n && a[sa[ci]] <= k[i])
pq.push(b[sa[ci++]]);
int cnt = 0;
while(!pq.empty() && cnt < k[i]) {
if(pq.top() >= k[i]) cnt++;
pq.pop();
}
if(cnt != k[i])
return 0;
}
return 1;
} else {
RE(i,m) {
int temp = getRegion(k[i],k[i]);
dp[i] = temp;
RE(j,i)
dp[i] = min(dp[i], dp[j] + temp - getRegion(k[i],k[j]));
dp[i] -= k[i];
if(dp[i] < 0)
return 0;
}
return 1;
}
return 0;
}
Compilation message
teams.cpp: In function 'int can(int, int*)':
teams.cpp:121:17: warning: declaration of 'cnt' shadows a global declaration [-Wshadow]
121 | int cnt = 0;
| ^~~
teams.cpp:84:4: note: shadowed declaration is here
84 | vi cnt;
| ^~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
13 ms |
12620 KB |
Output is correct |
2 |
Correct |
11 ms |
12568 KB |
Output is correct |
3 |
Correct |
11 ms |
12616 KB |
Output is correct |
4 |
Correct |
11 ms |
12572 KB |
Output is correct |
5 |
Correct |
11 ms |
12584 KB |
Output is correct |
6 |
Correct |
11 ms |
12620 KB |
Output is correct |
7 |
Correct |
13 ms |
12648 KB |
Output is correct |
8 |
Correct |
12 ms |
12620 KB |
Output is correct |
9 |
Correct |
12 ms |
12620 KB |
Output is correct |
10 |
Correct |
12 ms |
12572 KB |
Output is correct |
11 |
Correct |
11 ms |
12620 KB |
Output is correct |
12 |
Correct |
19 ms |
12684 KB |
Output is correct |
13 |
Correct |
14 ms |
12620 KB |
Output is correct |
14 |
Correct |
13 ms |
12584 KB |
Output is correct |
15 |
Correct |
13 ms |
12684 KB |
Output is correct |
16 |
Correct |
11 ms |
12620 KB |
Output is correct |
17 |
Correct |
13 ms |
12620 KB |
Output is correct |
18 |
Correct |
11 ms |
12620 KB |
Output is correct |
19 |
Correct |
12 ms |
12620 KB |
Output is correct |
20 |
Correct |
11 ms |
12648 KB |
Output is correct |
21 |
Correct |
11 ms |
12564 KB |
Output is correct |
22 |
Correct |
11 ms |
12556 KB |
Output is correct |
23 |
Correct |
11 ms |
12620 KB |
Output is correct |
24 |
Correct |
11 ms |
12568 KB |
Output is correct |
25 |
Correct |
11 ms |
12556 KB |
Output is correct |
26 |
Correct |
12 ms |
12608 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
118 ms |
38952 KB |
Output is correct |
2 |
Correct |
126 ms |
39000 KB |
Output is correct |
3 |
Correct |
110 ms |
38968 KB |
Output is correct |
4 |
Correct |
112 ms |
39352 KB |
Output is correct |
5 |
Correct |
75 ms |
38952 KB |
Output is correct |
6 |
Correct |
71 ms |
39008 KB |
Output is correct |
7 |
Correct |
72 ms |
38956 KB |
Output is correct |
8 |
Correct |
63 ms |
38992 KB |
Output is correct |
9 |
Correct |
62 ms |
39680 KB |
Output is correct |
10 |
Correct |
59 ms |
39668 KB |
Output is correct |
11 |
Correct |
59 ms |
39608 KB |
Output is correct |
12 |
Correct |
70 ms |
38872 KB |
Output is correct |
13 |
Correct |
76 ms |
38972 KB |
Output is correct |
14 |
Correct |
80 ms |
38884 KB |
Output is correct |
15 |
Correct |
100 ms |
38996 KB |
Output is correct |
16 |
Correct |
125 ms |
38968 KB |
Output is correct |
17 |
Correct |
70 ms |
38928 KB |
Output is correct |
18 |
Correct |
70 ms |
38924 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
120 ms |
39256 KB |
Output is correct |
2 |
Correct |
167 ms |
39244 KB |
Output is correct |
3 |
Correct |
240 ms |
42100 KB |
Output is correct |
4 |
Correct |
115 ms |
39352 KB |
Output is correct |
5 |
Correct |
2817 ms |
39408 KB |
Output is correct |
6 |
Correct |
1982 ms |
40632 KB |
Output is correct |
7 |
Correct |
75 ms |
40376 KB |
Output is correct |
8 |
Correct |
1487 ms |
40484 KB |
Output is correct |
9 |
Correct |
64 ms |
40504 KB |
Output is correct |
10 |
Correct |
82 ms |
40764 KB |
Output is correct |
11 |
Correct |
253 ms |
41208 KB |
Output is correct |
12 |
Correct |
1263 ms |
40328 KB |
Output is correct |
13 |
Correct |
338 ms |
40784 KB |
Output is correct |
14 |
Correct |
223 ms |
42260 KB |
Output is correct |
15 |
Correct |
183 ms |
40760 KB |
Output is correct |
16 |
Correct |
191 ms |
40808 KB |
Output is correct |
17 |
Correct |
231 ms |
40688 KB |
Output is correct |
18 |
Correct |
233 ms |
40708 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
785 ms |
144472 KB |
Output is correct |
2 |
Correct |
768 ms |
144508 KB |
Output is correct |
3 |
Correct |
1092 ms |
150472 KB |
Output is correct |
4 |
Correct |
765 ms |
144648 KB |
Output is correct |
5 |
Correct |
2672 ms |
144576 KB |
Output is correct |
6 |
Correct |
3851 ms |
144960 KB |
Output is correct |
7 |
Correct |
365 ms |
146828 KB |
Output is correct |
8 |
Correct |
3459 ms |
146668 KB |
Output is correct |
9 |
Correct |
345 ms |
149664 KB |
Output is correct |
10 |
Correct |
552 ms |
150708 KB |
Output is correct |
11 |
Correct |
3310 ms |
150720 KB |
Output is correct |
12 |
Correct |
2883 ms |
146948 KB |
Output is correct |
13 |
Correct |
1305 ms |
150860 KB |
Output is correct |
14 |
Correct |
1140 ms |
155388 KB |
Output is correct |
15 |
Correct |
813 ms |
151776 KB |
Output is correct |
16 |
Correct |
791 ms |
152000 KB |
Output is correct |
17 |
Correct |
693 ms |
151204 KB |
Output is correct |
18 |
Correct |
658 ms |
151372 KB |
Output is correct |