| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1364287 | Aviansh | Sprinklers (CEOI24_sprinklers) | C++20 | 20 ms | 1212 KiB |
#include <bits/stdc++.h>
using namespace std;
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n,m;
cin >> n >> m;
int s[n];
for(int &i : s){
cin >> i;
}
int f[m];
for(int &i : f){
cin >> i;
}
char ans[n];
auto check = [&] (int k){
//n sprinklers, m flowers both sorted
int cov = -1;
for(int i = 0;i<n;i++){
//see which direction to put this in
int ind = upper_bound(f,f+m,cov)-f;
if(ind == m){
break;
}
int pos = f[ind];
if(pos<s[i]){
//go left
ans[i]='L';
//covered s[i]-k to s[i]
if(pos>=s[i]-k){
//this is now covered so shift cov
cov=s[i];
}
}
else{
//go right
ans[i]='R';
//covered s[i] to s[i]+k
if(pos<=s[i]+k){
//now covered so shift cov
cov=s[i]+k;
}
}
}
if(cov>=f[m-1]){
return 1;
}
return 0;
};
for(int i = 0;i<=8;i++){
if(check(i)){
cout << i << "\n";
for(char c : ans){
cout << c;
}
return 0;
}
}
assert(0);
int lo = 0;
int hi = 1e9;
while(lo<hi){
int mid = (lo+hi)/2;
if(check(mid)){
hi=mid;
}
else{
lo=mid+1;
}
}
if(lo==1e9){
cout << -1;
return 0;
}
check(lo);
cout << lo << "\n";
for(char c:ans){
cout << c;
}
return 0;
}
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
