#include<bits/stdc++.h>
#define tpp tuple<int,int,int,int>
#define ll long long
using namespace std;
const ll MOD=1e9+7;
const int N=5e5+10;
vector<tuple<int,int,int,int>> qr[N];
int ret[N],sum[N],ind;
int cal(int l,int r){
r=min(r,ind);
if(r<0 || r<l) return 0;
int ret=sum[r];
if(l-1<0) return ret;
return ret-sum[l-1];
}
priority_queue<tpp,vector<tpp>,greater<tpp>> q;
void solve(){
int n,m;
cin>>n >>m;
for(int i=0;i<m;i++){
int l,r,k,t;
cin>>l >>r >>k >>t;
if(t==0) qr[l].push_back({r,l,t,k});
else qr[l].push_back({r,l,t,(r-l+1)-(k-1)});
}
for(int i=0;i<=n;i++){
for(auto tp:qr[i]) q.push(tp);
while(!q.empty()){
auto [r,l,t,b]=q.top();
int cb=cal(l,r);
int ca=(i-l)-cb; //(i-1)-l+1-cb
if(t==0 && ca>=b){
q.pop();
continue;
}
if(t==1 && cb>=b){
q.pop();
continue;
}
if(i>r){
cout<<-1;
return;
}
break;
}
if(i==n) break;
if(q.empty()) ret[i]=0;
else ret[i]=get<2>(q.top());
sum[i]=(i==0?0:sum[i-1])+ret[i];
ind=i;
}
for(int i=0;i<n;i++) cout<<ret[i] <<" ";
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int t=1;
//cin>>t;
while(t--){
solve();
}
}
| # | 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... |