# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
555124 | IvanJ | Meteors (POI11_met) | C++17 | 966 ms | 34224 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#define pb push_back
#define x first
#define y second
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int maxn = 3e5 + 5;
int n, m, k;
vector<int> own[maxn];
ll need[maxn];
pair<ii, int> qs[maxn];
int L[maxn], R[maxn];
vector<int> A[maxn];
ll fwt[maxn];
void update(int x, ll v) {
x++;
for(;x < maxn;x += (x & -x)) fwt[x] += v;
}
ll query(int x) {
x++;
ll ret = 0;
for(;x > 0;x -= (x & -x)) ret += fwt[x];
return ret;
}
int main() {
scanf("%d %d", &n, &m);
for(int i = 0;i < m;i++) {
int x;scanf("%d", &x);
x--, own[x].pb(i);
}
for(int i = 0;i < n;i++)
scanf("%lld", need + i);
scanf("%d", &k);
for(int i = 0;i < k;i++) {
int l, r, a;
scanf("%d %d %d", &l, &r, &a);
l--, r--;
qs[i] = {{l, r}, a};
}
for(int i = 0;i < n;i++)
L[i] = 0, R[i] = k;
while(true) {
for(int i = 0;i < maxn;i++) fwt[i] = 0;
int flag = 0;
for(int i = 0;i < n;i++)
if(L[i] != R[i]) A[(L[i] + R[i]) / 2].pb(i);
for(int i = 0;i < k;i++) {
if(qs[i].x.x > qs[i].x.y) {
update(qs[i].x.x, qs[i].y);
update(0, qs[i].y);
update(qs[i].x.y + 1, -qs[i].y);
} else {
update(qs[i].x.x, qs[i].y);
update(qs[i].x.y + 1, -qs[i].y);
}
while(A[i].size()) {
flag = 1;
int x = A[i].back();A[i].pop_back();
ll sum = 0;
for(int y : own[x]) sum += query(y);
if(sum < need[x]) L[x] = i + 1;
else R[x] = i;
}
}
if(!flag) break;
}
for(int i = 0;i < n;i++) {
if(L[i] == k) printf("NIE\n");
else printf("%d\n", L[i] + 1);
}
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |