Submission #984540

#TimeUsernameProblemLanguageResultExecution timeMemory
984540Ahmed57Alternating Current (BOI18_alternating)C++17
0 / 100
3089 ms10768 KiB
#include <bits/stdc++.h> using namespace std; #define int long long signed main(){ ios_base::sync_with_stdio(false);cin.tie(0); int n,m;cin>>n>>m; int pref[n+2] = {0}; vector<array<int,3>> v; vector<array<int,2>> rng[n+1]; int dir[m+1] = {0}; for(int i = 0;i<m;i++){ int a,b;cin>>a>>b; if(a<=b){ pref[a]++; pref[b+1]--; }else{ pref[a]++; pref[1]++; pref[b+1]--; b+=n; } v.push_back({a,b,i}); rng[a].push_back({b,i}); } for(int i = 2;i<=n;i++){ pref[i]+=pref[i-1]; } for(int i = 1;i<=n;i++){ if(pref[i]<=1){ cout<<"impossible\n"; return 0; } } for(int i = m-1;i>=0;i--){ for(int j = 0;j<m;j++)dir[j] = 0; int ind = v[i][0]; int nah = v[i][1], fe = v[i][2]; bool bad = 0; while(ind<v[i][0]+n){ if(nah==-1){ bad = 1; break; } int er = nah; dir[fe] = 1; if(er>=v[i][0]+n){ break; } while(ind<=er){ ind++; for(auto j:rng[(ind-1)%n+1]){ if(nah<(j[0]>n?j[0]:(ind<=n?j[0]:j[0]+n))){ nah = (j[0]>n?j[0]:(ind<=n?j[0]:j[0]+n)); fe = j[1]; } } if(ind<=er&&pref[(ind-1)%n+1]==2)nah = -1; } } int npref[n+2]; for(int j = 1;j<=n;j++){ npref[j] = 0; } for(int j = 0;j<m;j++){ if(dir[j])continue; if(v[j][1]>n){ npref[v[j][0]]++; npref[1]++; npref[(v[j][1]-1)%n+2]--; }else{ npref[v[j][0]]++; npref[v[j][1]+1]--; } } for(int j = 2;j<=n;j++)npref[j]+=npref[j-1]; for(int j = 1;j<=n;j++){ if(npref[j]==0){ bad = 1; break; } } if(bad==0){ for(int j = 0;j<m;j++){ cout<<dir[j]; } return 0; } } cout<<"impossible\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...