Submission #1300701

#TimeUsernameProblemLanguageResultExecution timeMemory
1300701NewtonabcRestore Array (RMI19_restore)C++20
13 / 100
6 ms860 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...