Submission #1140753

#TimeUsernameProblemLanguageResultExecution timeMemory
1140753Muhammad_AneeqSprinklers (CEOI24_sprinklers)C++20
9 / 100
518 ms8500 KiB
/* بسم الله الرحمن الرحيم Author: (:Muhammad Aneeq:) */ #include <iostream> #include <vector> #include <set> #include <algorithm> #warning check the output using namespace std; #define int long long int const N=1e5+10; int s[N],f[N]; char ans[N]={}; int n,m; bool vis[N]={}; bool check(int ran) { int ind=0; for (int i=0;i<n;i++) { int z=lower_bound(f,f+m+1,s[i])-f; if (z<=ind) { ans[i]='R'; ind=upper_bound(f,f+m+1,s[i]+ran)-f; } else { int j=i; while (j+1<n&&s[j]-f[ind]<=ran) { int z=lower_bound(f,f+m+1,s[j])-f; int y=lower_bound(f,f+m+1,s[j+1])-f; if (y!=z) j++; else break; } if (s[j]-f[ind]>ran) j--; if (j<i) return 0; for (int k=i;k<j;k++) { ans[k]='R'; ind=max(ind,(int)(upper_bound(f,f+m+1,s[k]+ran)-f)); } ans[j]='L'; ind=max(ind,(int)(upper_bound(f,f+m+1,s[j])-f)); i=j; } } // cout<<1<<endl; // for (int i=0;i<n;i++) // cout<<ans[i]; // cout<<endl; // cout<<f[2]<<endl; int dif[m+10]={}; for (int i=0;i<n;i++) { if (ans[i]=='L') { int l=lower_bound(f,f+m+1,s[i]-ran)-f; int r=upper_bound(f,f+m+1,s[i])-f; // cout<<l<<' '<<r<<endl; dif[l]++; dif[r]--; } else { int l=lower_bound(f,f+m+1,s[i])-f; int r=upper_bound(f,f+m+1,s[i]+ran)-f; dif[l]++; dif[r]--; } } for (int i=1;i<m;i++) dif[i]+=dif[i-1]; for(int i=0;i<m;i++) { if (dif[i]==0) { // cout<<i<<endl; return 0; } } return 1; } inline void solve() { cin>>n>>m; for (int i=0;i<n;i++) ans[i]='L'; for (int i=0;i<n;i++) { cin>>s[i]; } set<int>s1; for (int i=0;i<m;i++) { int x; cin>>x; // cout<<x<<endl; s1.insert(x); } for (int i=0;i<n;i++) s1.erase(s[i]); vector<int>f1; for (auto i:s1) f1.push_back(i); m=f1.size(); for (int i=0;i<m;i++) f[i]=f1[i]; f[m]=1e9+10; if (n==1) { if (s[0]>=f[m-1]) { cout<<s[0]-f[0]<<endl; cout<<"L\n"; return; } if(s[0]<=f[0]) { cout<<f[m-1]-s[0]<<endl; cout<<"R\n"; return; } cout<<-1<<endl;return; } // cout<<check(6)<<endl;; int st=-1,en=1e9+10; while (st+1<en) { int mid=(st+en)/2; if (check(mid)) en=mid; else st=mid; } if (check(en)==0) { cout<<-1<<endl; return; } cout<<en<<endl; for (int i=0;i<n;i++) cout<<ans[i]; cout<<endl; } signed main() { ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); int t=1; for (int i=1;i<=t;i++) { solve(); } }

Compilation message (stderr)

Main.cpp:11:2: warning: #warning check the output [-Wcpp]
   11 | #warning check the output
      |  ^~~~~~~
#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...