Submission #1140739

#TimeUsernameProblemLanguageResultExecution timeMemory
1140739MuhammadSaramSprinklers (CEOI24_sprinklers)C++20
9 / 100
609 ms5892 KiB
#include <bits/stdc++.h>

using namespace std;

int main()
{
	int n,m;
	cin>>n>>m;
	int a[n],b[m];
	for (int i=0;i<n;i++)
		cin>>a[i];
	for (int i=0;i<m;i++)
		cin>>b[i];
	int s=-1,e=1e9+1;
	while (s+1<e)
	{
		int mid=(s+e)/2;
		set<int> se;
		for (int i=0;i<m;i++)
			se.insert(b[i]);
		bool pos=1;
		for (int i=0;i<n && !se.empty();i++)
		{
			int x=*se.begin();
			if (x<a[i])
			{
				if (x<a[i]-mid)
					pos=0;
				while (!se.empty() && *se.begin()<=a[i])
					se.erase(se.begin());
			}
			else
			{
				while (1)
				{
					auto it=se.lower_bound(a[i]);
					if (it==se.end() or *it>a[i]+mid)
						break;
					se.erase(it);
				}
			}
		}
		if (pos && se.empty())
			e=mid;
		else
			s=mid;
	}
	if (e==1e9+1)
		e=-1;
	cout<<e<<endl;
	if (e!=-1)
	{
		set<int> se;
		for (int i=0;i<m;i++)
			se.insert(b[i]);
		for (int i=0;i<n;i++)
		{
			if (se.empty())
			{
				cout<<'R';
				continue;
			}
			int x=*se.begin();
			if (x<a[i])
			{
				cout<<'L';
				while (!se.empty() && *se.begin()<=a[i])
					se.erase(se.begin());
			}
			else
			{
				cout<<'R';
				while (1)
				{
					auto it=se.lower_bound(a[i]);
					if (it==se.end() or *it>a[i]+e)
						break;
					se.erase(it);
				}
			}
		}
		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...