# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
29303 | 2017-07-19T01:53:23 Z | 시제연(#1167) | Meteors (POI11_met) | C++11 | 2419 ms | 65536 KB |
#include <bits/stdc++.h> #define s first #define e second using namespace std; typedef long long ll; typedef pair<int,int> pii; int n, m, k; struct query { int l, r; ll a; query(){} query(int l, int r, ll a):l(l),r(r),a(a){} }; struct idxtree { ll tree[1050000]; int key = 524288; void init() { for (int i=0;i<key*2;i++) tree[i] = 0; } void updr(int s, int e, ll val) { s+=key;e+=key; while(s<=e) { if (s&1) tree[s] += val; if (~e&1) tree[e] += val; s = (s+1)>>1; e = (e-1)>>1; } } ll getv(int idx) { ll res = 0; idx += key; while(idx>0) { res += tree[idx]; idx>>=1; } return res; } void upd(int s, int e, ll val) { if (s<=e) updr(s,e,val); else { updr(s,m-1,val); updr(0,e,val); } } } it; int own[300100]; vector<int> lis[300100]; ll p[300100]; query arr[300100]; vector<int> loc[300100]; vector<int> tmp[300100]; pii yan[300100]; int res[300100]; void init(int s, int e) { if (s>e) return; int m = (s+e)>>1; yan[m] = pii(s,e); init(s,m-1); init(m+1,e); } void pb() { int i; for (i=0;i<n;i++) tmp[(k+1)/2].push_back(i); init(1,k); while(true) { for (i=1;i<=k;i++) { loc[i].assign(tmp[i].begin(),tmp[i].end()); tmp[i].clear(); } bool flag = 1; it.init(); for (i=1;i<=k;i++) { it.upd(arr[i-1].l,arr[i-1].r,arr[i-1].a); for (int v : loc[i]) { flag = 0; ll sum = 0; for (int l : lis[v]) { sum += it.getv(l); sum = min(sum,1000000100LL); } if (sum>=p[v]) { if (i==yan[i].s) res[v] = i; else tmp[(yan[i].s+i-1)/2].push_back(v); } else { if (i==yan[i].e) res[v] = i+1; else tmp[(yan[i].e+i+1)/2].push_back(v); } } } if (flag) break; } } int main() { int i; scanf("%d%d",&n,&m); for (i=0;i<m;i++) { scanf("%d",&own[i]); own[i]--; lis[own[i]].push_back(i); } for (i=0;i<n;i++) scanf("%lld",&p[i]); scanf("%d",&k); for (i=0;i<k;i++) { int l, r; ll a; scanf("%d%d%lld",&l,&r,&a); l--; r--; arr[i] = query(l,r,a); } pb(); for (i=0;i<n;i++) { if (res[i]>=k+1) printf("NIE\n"); else printf("%d\n",res[i]); } return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 13 ms | 43048 KB | Output is correct |
2 | Correct | 16 ms | 43180 KB | Output is correct |
3 | Correct | 16 ms | 43180 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 13 ms | 43048 KB | Output is correct |
2 | Correct | 13 ms | 43048 KB | Output is correct |
3 | Correct | 16 ms | 43180 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 186 ms | 44172 KB | Output is correct |
2 | Correct | 299 ms | 47584 KB | Output is correct |
3 | Correct | 246 ms | 46764 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 256 ms | 45836 KB | Output is correct |
2 | Correct | 239 ms | 45852 KB | Output is correct |
3 | Correct | 319 ms | 47460 KB | Output is correct |
4 | Correct | 59 ms | 45592 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 166 ms | 44900 KB | Output is correct |
2 | Correct | 186 ms | 48356 KB | Output is correct |
3 | Correct | 123 ms | 43312 KB | Output is correct |
4 | Correct | 256 ms | 47320 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 236 ms | 43472 KB | Output is correct |
2 | Correct | 223 ms | 45988 KB | Output is correct |
3 | Correct | 209 ms | 43972 KB | Output is correct |
4 | Correct | 299 ms | 49248 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2323 ms | 63516 KB | Output is correct |
2 | Correct | 826 ms | 45700 KB | Output is correct |
3 | Correct | 599 ms | 43312 KB | Output is correct |
4 | Memory limit exceeded | 1526 ms | 65536 KB | Memory limit exceeded |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2419 ms | 61852 KB | Output is correct |
2 | Correct | 876 ms | 45184 KB | Output is correct |
3 | Correct | 479 ms | 43180 KB | Output is correct |
4 | Memory limit exceeded | 1176 ms | 65536 KB | Memory limit exceeded |