Submission #1042564

#TimeUsernameProblemLanguageResultExecution timeMemory
1042564UnforgettableplTricolor Lights (JOI24_tricolor)C++17
10 / 100
61 ms1800 KiB
#include "Anna.h"
#include <bits/stdc++.h>
using namespace std;

namespace {

string calc(vector<int> arr,string S){
	int N = arr.size()+1;
	string res(N,'$');
	for(int i=0;i<N-1;i++){
		if(arr[i])continue;
		vector<bool> present(3);
		if(S[i]=='R')present[0]=true;
		else if(S[i]=='G')present[1]=true;
		else if(S[i]=='B')present[2]=true;
		if(S[i+1]=='R')present[0]=true;
		else if(S[i+1]=='G')present[1]=true;
		else if(S[i+1]=='B')present[2]=true;
		if(!present[0])res[i]=res[i+1]='R';
		else if(!present[1])res[i]=res[i+1]='G';
		else if(!present[2])res[i]=res[i+1]='B';
		for(int j=i-1;j>=0;j--){
			if(arr[j]!=1)break;
			vector<bool> present(3);
			if(S[j]=='R')present[0]=true;
			else if(S[j]=='G')present[1]=true;
			else if(S[j]=='B')present[2]=true;
			if(res[j+1]=='R')present[0]=true;
			else if(res[j+1]=='G')present[1]=true;
			else if(res[j+1]=='B')present[2]=true;
			if(!present[0])res[j]='R';
			else if(!present[1])res[j]='G';
			else if(!present[2])res[j]='B';
		}
		for(int j=i+2;j<N;j++){
			if(arr[j-1]!=1)break;
			vector<bool> present(3);
			if(S[j]=='R')present[0]=true;
			else if(S[j]=='G')present[1]=true;
			else if(S[j]=='B')present[2]=true;
			if(res[j-1]=='R')present[0]=true;
			else if(res[j-1]=='G')present[1]=true;
			else if(res[j-1]=='B')present[2]=true;
			if(!present[0])res[j]='R';
			else if(!present[1])res[j]='G';
			else if(!present[2])res[j]='B';	
		}
	}
	for(int i=0;i<N;i++)assert(res[i]!='$');
	return res;
}

}

pair<string, int> anna(int N, string S) {
	if(N<=130){
		string res;
		for(int i=0;i<N;i++){
			if(S[i]=='R')res.insert(res.end(),'B');
			else if(S[i]=='B')res.insert(res.end(),'G');
			else if(S[i]=='G')res.insert(res.end(),'R');
		}
		return {res,N};
	}
	vector<int> res(N-1,1);
	res[125]=0;
	return {calc(res,S),130};
}
#include "Bruno.h"
#include <bits/stdc++.h>
using namespace std;

namespace {

int N;
int l;

}  // namespace

void init(int N, int l) {
	::N = N;
	::l = l;
}

int bruno(string u) {
	if(N<=130)return 1;
	int idxatsame = -1;
	for(int i=1;i<l;i++)if(u[i]==u[i-1])idxatsame=i-1;
	assert(idxatsame!=-1);
	return 126-idxatsame;
}
#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...