#include <bits/stdc++.h>
using namespace std;
#define en '\n'
#define sp ' '
typedef long long ll;
#define Linux ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define pii pair<int,int>
const int N=3e5+1;
struct stu
{
int s,e,p;
};
int n,m,k;
int fen[N],rufen;
int a;
bool chk=1,sub;
int want[N];
int l[N],r[N],mid[N];
stu met[N];
vector<int> res[N],prop[N];
void update(int val,int idx){
for(;idx<N;idx+=(idx&-idx)){
if(fen[idx]>(ll)1e9 && val>0)continue;
fen[idx]+=val;
}
}
unsigned int query(int idx){
rufen=0;
for(;idx>0;idx-=(idx&-idx)){
rufen+=fen[idx];
if(rufen>(ll)1e9)break;
}
return rufen;
}
int main(){Linux
cin >> n >> m;
for(int i=1;i<=m;i++){
cin >> a;
prop[a].push_back(i);
}
for(int i=1;i<=n;i++){
cin >> want[i];
}
cin >> k;
for(int i=1;i<=k;i++){
cin >> met[i].s >> met[i].e >> met[i].p;
}
for(int i=1;i<=n;i++)l[i]=1,r[i]=k;
while(1){
sub=1;
for(int i=1;i<=k;i++){
res[i].clear();
}
for(int i=1;i<=m;i++){
mid[i]=(l[i]+r[i])/2;
res[mid[i]].push_back(i);
if(l[i]<r[i])sub=0;
}
if(sub)break;
for(int i=1;i<=m;i++)fen[i]=0;
for(int i=1;i<=k;i++){
if(met[i].s<=met[i].e){
update(met[i].p,met[i].s);
update(-met[i].p,met[i].e+1);
}
else {
update(-met[i].p,met[i].e+1);
update(met[i].p,met[i].s);
update(met[i].p,1);
}
for(int v:res[i]){
ll sum=0;
bool mor=0;
for(int c:prop[v]){
sum+=query(c);
if(sum>(ll)1e9){
mor=1;
break;
}
}
if(mor || sum>=want[v])r[v]=mid[v];
else l[v]=mid[v]+1;
}
}
}
for(int i=1;i<=n;i++){
if(l[i]>k)cout << "NIE\n";
else cout << l[i] << en;
}
return 0;
}
# | 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... |