# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
29287 | 2017-07-19T01:25:04 Z | 김현수(#1165) | Meteors (POI11_met) | C++14 | 3696 ms | 44344 KB |
#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll N = 300005; int n, m, k, a[N], req[N], s[N], e[N]; vector<int> ter[N], swp[N]; struct met {int s, e, x;} b[N]; struct segtree { ll v[4*N], lim; void init () { for(lim=1;lim<=m;lim<<=1); for(ll i=2*lim;--i;) v[i] = 0; } void upd (ll S, ll E, ll X) { S += lim; E += lim; while(S <= E) { if(S%2 == 1) v[S++] += X; if(E%2 == 0) v[E--] += X; S /= 2; E /= 2; } } ll get (ll P) { ll ret = 0; P += lim; while(P) {ret += v[P]; P /= 2;} return ret; } } seg; bool can (ll I) { ll R = 0; for(auto &T : ter[I]) { R += seg.get(T); if(R >= req[I]) return true; } return false; } bool solve () { for(ll i=1;i<=n;i++) { if(s[i] == e[i]) continue; ll M = (s[i]+e[i])/2; swp[M].push_back(i); } seg.init(); for(ll i=1;i<=k;i++) { if(b[i].s > b[i].e) { seg.upd(b[i].s, m, b[i].x); seg.upd(1, b[i].e, b[i].x); } else seg.upd(b[i].s,b[i].e,b[i].x); for(auto &T : swp[i]) { can(T) ? e[T] = i : s[T] = i+1; } swp[i].clear(); swp[i].shrink_to_fit(); } for(ll i=1;i<=n;i++) { if(s[i] != e[i]) return true; } return false; } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { scanf("%d",&a[i]); ter[a[i]].push_back(i); } for(int i=1;i<=n;i++) { scanf("%d",&req[i]); } scanf("%d",&k); for(int i=1;i<=k;i++) { scanf("%d%d%d",&b[i].s,&b[i].e,&b[i].x); } for(int i=1;i<=n;i++) { s[i] = 1; e[i] = k+1; } while(solve()); for(int i=1;i<=n;i++) { if(s[i] == k+1) puts("NIE"); else printf("%d\n",s[i]); } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 3 ms | 33664 KB | Output is correct |
2 | Correct | 0 ms | 33664 KB | Output is correct |
3 | Correct | 3 ms | 33664 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 3 ms | 33664 KB | Output is correct |
2 | Correct | 3 ms | 33664 KB | Output is correct |
3 | Correct | 9 ms | 33664 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 159 ms | 34068 KB | Output is correct |
2 | Correct | 313 ms | 34620 KB | Output is correct |
3 | Correct | 293 ms | 34400 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 233 ms | 34296 KB | Output is correct |
2 | Correct | 233 ms | 34312 KB | Output is correct |
3 | Correct | 283 ms | 34692 KB | Output is correct |
4 | Correct | 43 ms | 34464 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 129 ms | 34196 KB | Output is correct |
2 | Correct | 179 ms | 34796 KB | Output is correct |
3 | Correct | 106 ms | 33664 KB | Output is correct |
4 | Correct | 246 ms | 34604 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 243 ms | 33956 KB | Output is correct |
2 | Correct | 249 ms | 34320 KB | Output is correct |
3 | Correct | 203 ms | 34060 KB | Output is correct |
4 | Correct | 319 ms | 34816 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2289 ms | 38452 KB | Output is correct |
2 | Correct | 889 ms | 36316 KB | Output is correct |
3 | Correct | 559 ms | 33664 KB | Output is correct |
4 | Correct | 3189 ms | 43108 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2243 ms | 38252 KB | Output is correct |
2 | Correct | 773 ms | 35800 KB | Output is correct |
3 | Correct | 423 ms | 33664 KB | Output is correct |
4 | Correct | 3696 ms | 44344 KB | Output is correct |