#include <bits/stdc++.h>
using namespace std;
const int N = 1 << 19;
int n,m,q;
int bl[N],need[N];
vector<int> wh[N];
int l[N],r[N];
vector<int> ask[N];
vector<tuple<int,int,int> > inp;
long long fw[N];
void update(int idx,long long val){ while(idx<N) fw[idx]+=val,idx+=(idx & -idx); }
long long read(int idx){ if(idx==0) return 0; int val = 0; while(idx>0) val+=fw[idx],idx-=(idx & -idx); return val; }
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> n >> m;
for(int i = 1;i <= m;i++) cin >> bl[i],wh[bl[i]].push_back(i);
for(int i = 1;i <= n;i++) cin >> need[i];
cin >> q;
for(int i = 1;i <= q;i++)
{
int l,r,k;
cin >> l >> r >> k;
inp.push_back({l,r,k});
}
for(int i = 1;i <= n;i++) l[i] = 1,r[i] = q;
while(true)
{
bool done = true;
for(int i = 1;i <= n;i++) if(l[i]!=r[i]) done = false,ask[(l[i]+r[i])/2].push_back(i);
if(done) break;
for(int i = 1;i <= m;i++) fw[i] = 0;
for(int i = 1;i <= q;i++)
{
auto [ll,rr,k] = inp[i-1];
if(ll<=rr) update(ll,k),update(rr+1,-k);
else update(1,k),update(rr+1,-k),update(ll,k);
for(int x : ask[i])
{
long long tmp = 0;
for(int y : wh[x]) tmp+=read(y);
int m = (l[x]+r[x])/2;
if(tmp>=need[x]) r[x] = m;
else l[x] = m+1;
}
ask[i].clear();
}
}
for(int i = 1;i <= n;i++)
{
if(l[i]==q)
{
int tmp = 0;
for(int x : wh[i]) tmp+=read(x);
if(tmp<need[i]) l[i] = -1;
}
}
for(int i = 1;i <= n;i++) if(l[i]!=-1) cout << l[i] << '\n'; else cout << "NIE\n";
}
Compilation message
met.cpp: In function 'int main()':
met.cpp:41:18: warning: decomposition declaration only available with -std=c++1z or -std=gnu++1z
auto [ll,rr,k] = inp[i-1];
^
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
17 ms |
25088 KB |
Output is correct |
2 |
Correct |
18 ms |
25088 KB |
Output is correct |
3 |
Correct |
21 ms |
25088 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
17 ms |
25088 KB |
Output is correct |
2 |
Correct |
17 ms |
25088 KB |
Output is correct |
3 |
Correct |
18 ms |
25216 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
92 ms |
26988 KB |
Output is correct |
2 |
Correct |
172 ms |
29040 KB |
Output is correct |
3 |
Correct |
121 ms |
28712 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
130 ms |
28308 KB |
Output is correct |
2 |
Correct |
139 ms |
28144 KB |
Output is correct |
3 |
Correct |
169 ms |
29168 KB |
Output is correct |
4 |
Correct |
47 ms |
27384 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
120 ms |
27504 KB |
Output is correct |
2 |
Correct |
187 ms |
29680 KB |
Output is correct |
3 |
Correct |
125 ms |
25980 KB |
Output is correct |
4 |
Correct |
126 ms |
29040 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
133 ms |
26656 KB |
Output is correct |
2 |
Correct |
155 ms |
28088 KB |
Output is correct |
3 |
Correct |
100 ms |
26864 KB |
Output is correct |
4 |
Correct |
162 ms |
30320 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1142 ms |
45716 KB |
Output is correct |
2 |
Incorrect |
1184 ms |
33896 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1118 ms |
44632 KB |
Output is correct |
2 |
Incorrect |
776 ms |
33896 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |