Submission #1140532

#TimeUsernameProblemLanguageResultExecution timeMemory
1140532UmairAhmadMirzaSprinklers (CEOI24_sprinklers)C++20
6 / 100
93 ms8304 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
int const N=2e5+5;
int const mod=1e9+7;

int n,m;
vector<int> flo,spr;
vector<pair<int,int>> pr;
vector<int> d;

bool solve(int K){
	deque<int> bh_flo;
	int cur=-1;
	// vector<int> d;
	d.clear();
	vector<int> lst;
	int sz=0;
	for(auto [p,t]:pr){
		if(t==0){
			sz++;
			while(bh_flo.size()>0 && bh_flo[0]<=cur)
				bh_flo.pop_front();
			if(bh_flo.size()==0){
				d.push_back(1);
				lst.push_back(-1);
				cur=p+K;
				continue;
			}
			if(bh_flo[0]<p-K)
				return 0;
			d.push_back(0);
			if(d.size()>2 && spr[sz-2]>=p-K && spr[sz-3]>=p-K){
				d[sz-2]=1;
				cur=spr[sz-2]+K;
				lst.push_back(lst.back());
			}
			else if(d.size()>1 && spr[sz-2]>=p-K){
				if(lst.back()>=p-K){
					lst.push_back(lst.back());
					d[sz-2]=1;
					cur=spr[sz-2]+K;
				}
				else
					lst.push_back(bh_flo[0]);
			}
			else
				lst.push_back(bh_flo[0]);

		}
		else{
			if(p>cur)
				bh_flo.push_back(p);
		}
	}
	while(bh_flo.size()>0 && bh_flo[0]<=cur)
		bh_flo.pop_front();
	if(bh_flo.size()>0)
		return 0;
	return 1;
}

signed main(){
	cin>>n>>m;
	for (int i = 0; i < n; ++i)
	{
		int a;
		cin>>a;
		spr.push_back(a);
		pr.push_back({a,0});
	}
	for (int i = 0; i < m; ++i)
	{
		int a;
		cin>>a;
		flo.push_back(a);
		pr.push_back({a,1});
	}
	sort(pr.begin(), pr.end());
	int low=-1,high=1e9+1;
	while(high-low>1){
		int mid=(high+low)/2;
		if(solve(mid))
			high=mid;
		else
			low=mid;
	}
	if(high==1e9+1)
		cout<<-1<<endl;
	else{
		solve(high);
		cout<<high<<endl;
		for(int i:d){
			if(i==1)
				cout<<'R';
			else
				cout<<'L';
		}
		cout<<endl;
	}
	return 0;
}
#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...