Submission #1140536

#TimeUsernameProblemLanguageResultExecution timeMemory
1140536hashimaliSprinklers (CEOI24_sprinklers)C++20
3 / 100
2096 ms10568 KiB
#include <bits/stdc++.h> #define endl '\n' #define ld long double #define pb push_back #define pf push_front #define mod 998244353 #define se second #define fi first #define all(ls) (ls).begin(),(ls).end() #define int long long using namespace std; int n,m,works; const int N=1e5+10; int s[N],f[N],d[N]; void work(int mid){ works=0; multiset<int>rem; for(int i=0;i<n;i++) d[i]=0; for(int i=0;i<m;i++) rem.insert(f[i]); for(int i=0;i<n;i++){ if(rem.empty()){ works=1; return; } int cur=*rem.begin(); if(cur>=s[i]) d[i]=1; else if(cur<(s[i]-mid)){ works=0; return; } else if(cur>=(s[i]-mid)) d[i]=0; else{ auto up=rem.upper_bound(s[i]); if(up==rem.end()) d[i]=0; else if(*up>=s[i+1]) d[i]=0; else d[i]=1; } multiset<int>tmp; if(d[i]==0){ //s[i]-mid....j....s[i] for(int j:rem) if((s[i]-mid)<=j and j<=s[i]){} else tmp.insert(j); } if(d[i]==1){ //s[i]....j....s[i]+mid for(int j:rem) if(s[i]<=j and j<=(s[i]+mid)){} else tmp.insert(j); } rem=tmp; } works=(rem.empty()); } void solve(){ cin>>n>>m; for(int i=0;i<n;i++) cin>>s[i]; for(int i=0;i<m;i++) cin>>f[i]; int low=0,high=1e14; while(low<=high){ int mid=(low+high)/2; work(mid); if(works) high=mid-1; else low=mid+1; } if(low==(1e14+1)) low=-1; cout<<low<<endl; if(low!=-1){ work(low); for(int i=0;i<n;i++){ if(d[i]==0) cout<<'L'; else cout<<'R'; } cout<<endl; } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t=1; // cin>>t; for(int i=1;i<=t;i++){ // cout<<"Scenario #"<<i<<":"<<" "; 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...