Submission #493956

#TimeUsernameProblemLanguageResultExecution timeMemory
493956leakedRestore Array (RMI19_restore)C++14
20 / 100
591 ms792 KiB
#include <bits/stdc++.h> #define f first #define s second #define m_p make_pair #define vec vector #define sz(x) (int)(x).size() #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() #define fast_rmi ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); using namespace std; signed main(){ fast_rmi; int n,m; cin>>n>>m; vec<array<int,4>>arr(m); vec<array<int,4>>arrt(m); for(auto &z : arr){ cin>>z[0]>>z[1]>>z[2]>>z[3]; if(z[3]==1) z[2]=z[2]-1; // cout<<"L R "<<z[0]<<' '<<z[1]<<' '<<z[2]<<' '<<"TYPE "<<z[3]<<endl; } auto brute=[&](){ for(int mask=0;mask<(1<<n);mask++){ vec<int>a(n); for(int i=0;i<n;i++){ if(mask&(1<<i)) a[i]=1; else a[i]=0; } auto check=[&](){ int ok=1; for(auto &z : arr){ int cnt=0; for(int i=z[0];i<=z[1];i++) cnt+=(!a[i]); if(z[3]) ok&=(cnt<=z[2]); else{ ok&=(cnt>=z[2]); } } return ok; }; if(check()){ return a; } } return vec<int>(); }; if(n<=18){ vec<int> ans=brute(); if(!sz(ans)){ cout<<-1; return 0; } for(auto &z : ans) cout<<z<<' '; return 0; } arrt=arr; vec<int> a(n,1); for(int i=0;i<n;i++){ int ok=1; int nd=0; for(auto &z : arr){ if(z[0]<=i&&z[1]>=i){ // cout<<"ALOGG "<<z[0]<<' '<<z[1]<<endl; if(z[3]==0 && z[2]){ nd=1; // cout<<"NEED "<<z[0]<<' '<<z[1]<<' '<<z[2]<<endl; } if(z[3]==1 && !z[2]){ ok=0; // cout<<"CHE "<<z[0]<<' '<<z[1]<<endl; } } } if(nd && ok){ a[i]=0; // cout<<"Y "<<i<<endl; for(auto &z : arr){ if(z[0]<=i&&z[1]>=i){ z[2]=max(0,z[2]-1); } } } } auto check=[&](){ int ok=1; for(auto &z : arrt){ int cnt=0; for(int i=z[0];i<=z[1];i++) cnt+=(!a[i]); if(z[3]) assert(cnt<=z[2]); else{ ok&=(cnt>=z[2]); } } return ok; }; if(!check()){ cout<<-1; } else for(auto &z : a) cout<<z<<' '; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...