Submission #1094542

#TimeUsernameProblemLanguageResultExecution timeMemory
1094542epicci23Sprinklers (CEOI24_sprinklers)C++17
100 / 100
81 ms4960 KiB
#include <bits/stdc++.h> using namespace std; char ans[100010]; long long ss[100010],ff[100010],n,m,poz1,poz2; bool verificare2(long long p) { poz1=poz2=1; long long elim=-1; while(poz2<=m) { if(poz1>n) return false; if(ss[poz1]<=ff[poz2]) { elim=ss[poz1]+p; ans[poz1-1]='R'; ++poz1; } else { if(ss[poz1]-ff[poz2]>p) return false; ans[poz1-1]='L'; elim=ss[poz1]; if(poz1<n&&ss[poz1+1]-ff[poz2]<=p) { long long cop=poz2; while(cop<=m&&ff[cop]<=ss[poz1]) ++cop; if(cop<=m&&ff[cop]<ss[poz1+1]) { ans[poz1-1]='R'; ans[poz1]='L'; elim=ss[poz1]+p; poz1+=2; } else ++poz1; } else ++poz1; } while(poz2<=m&&elim>=ff[poz2]) ++poz2; } return true; } long long s[100010],f[100010]; bool verificare(long long p) { poz1=poz2=1; long long elim=-1; while(poz2<=m) { if(poz1>n) return false; if(s[poz1]<=f[poz2]) { elim=s[poz1]+p; ans[poz1-1]='R'; ++poz1; } else { if(s[poz1]-f[poz2]>p) return false; ans[poz1-1]='L'; elim=s[poz1]; if(poz1<n&&s[poz1+1]-f[poz2]<=p) { long long cop=poz2; while(cop<=m&&f[cop]<=s[poz1]) ++cop; if(cop<=m&&f[cop]<s[poz1+1]) { ans[poz1-1]='R'; ans[poz1]='L'; elim=s[poz1]+p; poz1+=2; } else ++poz1; } else ++poz1; } while(poz2<=m&&elim>=f[poz2]) ++poz2; } return true; } int main() { cin>>n>>m; for(long long i=1;i<=n;++i) { cin>>s[i]; ss[i]=s[i]; ans[i-1]='L'; s[i]=1000000000-s[i]; } for(long long i=1;i<=m;++i) { cin>>f[i]; ff[i]=f[i]; f[i]=1000000000-f[i]; } sort(s+1,s+n+1); sort(f+1,f+m+1); if(n==1) { if(f[1]<s[1]&&s[1]<f[m]) { cout<<-1; return 0; } } long long b=0,e=2000000000,mid; while(b<=e) { mid=(b+e)/2; if(verificare(mid)==true||verificare2(mid)==true) e=mid-1; else b=mid+1; } if(verificare2(b)==true) { cout<<b<<'\n'<<ans; return 0; } verificare(b); cout<<b<<'\n'; for(int i=n-1;i>=0;--i) if(ans[i]=='R') cout<<'L'; else cout<<'R'; 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...