# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
29299 | 2017-07-19T01:50:18 Z | 시제연(#1167) | Meteors (POI11_met) | C++11 | 2699 ms | 63512 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); 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
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 13 ms | 43044 KB | Output is correct |
2 | Correct | 19 ms | 43176 KB | Output is correct |
3 | Correct | 16 ms | 43176 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 13 ms | 43044 KB | Output is correct |
2 | Correct | 19 ms | 43044 KB | Output is correct |
3 | Correct | 16 ms | 43176 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 216 ms | 44168 KB | Output is correct |
2 | Correct | 303 ms | 47580 KB | Output is correct |
3 | Correct | 256 ms | 46760 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 259 ms | 45832 KB | Output is correct |
2 | Correct | 209 ms | 45848 KB | Output is correct |
3 | Correct | 239 ms | 47456 KB | Output is correct |
4 | Correct | 66 ms | 45588 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 159 ms | 44896 KB | Output is correct |
2 | Correct | 189 ms | 48352 KB | Output is correct |
3 | Correct | 143 ms | 43308 KB | Output is correct |
4 | Correct | 246 ms | 47316 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 246 ms | 43468 KB | Output is correct |
2 | Correct | 266 ms | 45984 KB | Output is correct |
3 | Correct | 219 ms | 43968 KB | Output is correct |
4 | Correct | 369 ms | 49244 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2699 ms | 63512 KB | Output is correct |
2 | Incorrect | 876 ms | 45696 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2086 ms | 61848 KB | Output is correct |
2 | Incorrect | 853 ms | 45180 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |