제출 #1140545

#제출 시각아이디문제언어결과실행 시간메모리
1140545hashimaliSprinklers (CEOI24_sprinklers)C++20
9 / 100
702 ms7484 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; set<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; } if(d[i]==0){ //s[i]-mid....j....s[i] while(rem.size() and (s[i]-mid)<=*rem.begin() and *rem.begin()<=s[i]) rem.erase(rem.begin()); } if(d[i]==1){ //s[i]....j....s[i]+mid auto ptr=rem.lower_bound(s[i]); while(rem.size() and ptr!=rem.end() and s[i]<=(*ptr) and (*ptr)<=(s[i]+mid)) ptr=rem.erase(ptr); } } 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...