# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1146449 | Persia | Meteors (POI11_met) | C11 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
#define bit(i, x) (x >> i & 1)
#define ll long long
#define sz(x) (int)x.size()
const int N = 3e5 + 5;
const int mod = 998244353;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
ll rnd(ll l, ll r) {
return uniform_int_distribution<ll>(l, r)(rng);
}
int n, m;
int o[N], p[N];
int k;
array<int, 3> q[N];
int res[N];
ll a[N];
signed main(int argc, char* argv[]) {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n >> m;
for(int i = 1; i <= m; i++) {
cin >> o[i];
}
for(int i = 1; i <= n; i++) {
cin >> p[i];
}
cin >> k;
for(int i = 1; i <= k; i++) {
int l, r, x; cin >> l >> r >> x;
q[i] = {l, r, x};
}
for(int i = 1; i <= n; i++) res[i] = -1;
for(int i = 1; i <= k; i++) {
auto [l, r, x] = q[i];
if(l <= r) {
for(int j = l; j <= r; j++) {
int u = o[j];
if(a[u] < p[u]) {
a[u] += x;
if(a[u] >= p[u]) res[u] = i;
}
}
}
else {
for(int j = l; j <= m; j++) {
int u = o[j];
if(a[u] < p[u]) {
a[u] += x;
if(a[u] >= p[u]) res[u] = i;
}
}
for(int j = 1; j <= r; j++) {
int u = o[j];
if(a[u] < p[u]) {
a[u] += x;
if(a[u] >= p[u]) res[u] = i;
}
}
}
}
for(int i = 1; i <= n; i++) {
if(res[i] == -1) cout << "NIE";
else cout << res[i];
cout << "\n";
}
return 0 ^ 0;
}