답안 #1087773

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1087773 2024-09-13T08:23:59 Z mychecksedad Sprinklers (CEOI24_sprinklers) C++17
9 / 100
172 ms 5168 KB
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define pb push_back
#define en cout << '\n'
#define vi vector<int>
#define pii pair<int, int>
#define ff first
#define ss second
#define all(x) x.begin(),x.end()
const int N = 1e5+100;


int n, m, a[N], b[N];
int get(int l, int r){
	if(r < l) return 0;
	return upper_bound(b+1, b+1+m, r) - lower_bound(b+1, b+1+m, l);
}
void solve(){
	cin >> n >> m;
	vector<pii> v;
	for(int i = 1; i <= n; ++i){
		cin >> a[i];
		v.pb({a[i], 1});
	}
	for(int i = 1; i <= m; ++i){
		cin >> b[i];
		v.pb({b[i], 0});
	}
	sort(all(v));
	string soll;
	int l = 0, r = 1e9, ans = -1;
	while(l <= r){
		int k = l+r>>1;
		string sol = "";
		bool ok = 1;
		int last_covered = -2e9;
		for(int i = 1; i <= n; ++i){
			if(last_covered >= a[i] - 1){
				sol += 'R';
				last_covered = a[i] + k;
				continue;
			}
			if(get(last_covered + 1, a[i] - 1) > get(a[i] - k, a[i] - 1)){
				ok = 0;
				break;
			}
			if(get(last_covered + 1, a[i] - 1) > 0){
				if(i + 1 <= n && get(a[i] + 1, min(a[i + 1] - 1, a[i] + k)) == 0){
					sol += 'L';
					last_covered = a[i];
				}else if(i + 1 <= n && get(a[i] + 1, min(a[i + 1] - 1, a[i] + k)) > 0){
					if(a[i + 1] - k < a[i] && get(last_covered + 1, a[i] - 1) == get(a[i + 1] - k, a[i] - 1)){
						sol += 'R';
						sol += 'L';
						last_covered = a[i] + k;
						++i;
						continue;
					}else{
						sol += 'L';
						sol += 'L';
						last_covered = a[i + 1];
						++i;
						continue;
					}
				}else{
					sol += 'L';
					last_covered = a[i];
				}
			}else{
				sol += 'R';
				last_covered = a[i] + k;
			}
		}
		if(b[m] > last_covered) ok = 0;


		if(ok){
			ans = k;
			soll = sol;
			r = k - 1;
		}else{
			l = k + 1;
		}
	}

	cout << ans << '\n';
	if(ans != -1){
		cout << soll;
	}
}

int main(){
	cin.tie(0); ios::sync_with_stdio(0);
	solve();
	return 0;
}

Compilation message

Main.cpp: In function 'void solve()':
Main.cpp:34:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   34 |   int k = l+r>>1;
      |           ~^~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Correct
2 Correct 1 ms 348 KB Correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Correct
2 Correct 8 ms 2520 KB Correct
3 Correct 1 ms 348 KB Correct
4 Correct 9 ms 2780 KB Correct
5 Correct 9 ms 2536 KB Correct
6 Correct 1 ms 348 KB Correct
7 Correct 1 ms 348 KB Correct
8 Correct 3 ms 1116 KB Correct
9 Correct 0 ms 348 KB Correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Correct
2 Correct 16 ms 2632 KB Correct
3 Correct 3 ms 880 KB Correct
4 Correct 36 ms 5064 KB Correct
5 Correct 36 ms 5072 KB Correct
6 Correct 0 ms 348 KB Correct
7 Correct 0 ms 348 KB Correct
8 Correct 27 ms 5076 KB Correct
9 Correct 26 ms 5064 KB Correct
10 Correct 39 ms 5168 KB Correct
11 Correct 18 ms 3032 KB Correct
12 Correct 17 ms 3284 KB Correct
13 Correct 33 ms 4052 KB Correct
14 Correct 37 ms 4132 KB Correct
15 Correct 49 ms 4312 KB Correct
16 Correct 27 ms 4052 KB Correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Correct
2 Correct 1 ms 348 KB Correct
3 Correct 0 ms 348 KB Correct
4 Correct 0 ms 348 KB Correct
5 Incorrect 0 ms 476 KB User solution is worse than jury's solution
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Correct
2 Correct 46 ms 2940 KB Correct
3 Correct 168 ms 5048 KB Correct
4 Correct 168 ms 5072 KB Correct
5 Correct 172 ms 5056 KB Correct
6 Correct 164 ms 5052 KB Correct
7 Correct 167 ms 5068 KB Correct
8 Incorrect 89 ms 5060 KB User solution is worse than jury's solution
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Correct
2 Correct 1 ms 348 KB Correct
3 Correct 8 ms 2520 KB Correct
4 Correct 1 ms 348 KB Correct
5 Correct 9 ms 2780 KB Correct
6 Correct 9 ms 2536 KB Correct
7 Correct 1 ms 348 KB Correct
8 Correct 1 ms 348 KB Correct
9 Correct 3 ms 1116 KB Correct
10 Correct 0 ms 348 KB Correct
11 Correct 16 ms 2632 KB Correct
12 Correct 3 ms 880 KB Correct
13 Correct 36 ms 5064 KB Correct
14 Correct 36 ms 5072 KB Correct
15 Correct 0 ms 348 KB Correct
16 Correct 0 ms 348 KB Correct
17 Correct 27 ms 5076 KB Correct
18 Correct 26 ms 5064 KB Correct
19 Correct 39 ms 5168 KB Correct
20 Correct 18 ms 3032 KB Correct
21 Correct 17 ms 3284 KB Correct
22 Correct 33 ms 4052 KB Correct
23 Correct 37 ms 4132 KB Correct
24 Correct 49 ms 4312 KB Correct
25 Correct 27 ms 4052 KB Correct
26 Correct 0 ms 348 KB Correct
27 Correct 0 ms 348 KB Correct
28 Incorrect 0 ms 476 KB User solution is worse than jury's solution
29 Halted 0 ms 0 KB -