Submission #131725

#TimeUsernameProblemLanguageResultExecution timeMemory
131725mahmoudbadawyBroken Device (JOI17_broken_device)C++17
100 / 100
61 ms3312 KiB
#include "Annalib.h"
#include <bits/stdc++.h>

using namespace std;

int br[155];

void Anna( int N, long long X, int K, int P[] ){
	srand(123321);
	vector<int> p;
	for(int i=0;i<N;i++) p.push_back(i);
	random_shuffle(p.begin(),p.end());
	for(int i=0;i<N;i++) br[i]=0;
	for(int i=0;i<K;i++) br[P[i]]=1;
	/*for(int i=0;i<N;i+=2)
	{
		if(br[p[i]]||br[p[i+1]])
			br[p[i]]=br[p[i+1]]=1;
	}*/
	for(int i=0;i<N;i+=2)
	{
		int b=X%3;
		if(b==0 && !br[p[i+1]])
		{
			Set(p[i],0); Set(p[i+1],1);
		}
		else if(b==1 && !br[p[i]]) 
		{
			Set(p[i],1); Set(p[i+1],0);
		}
		else if(b==2 && (br[p[i]]+br[p[i+1]]==0))
		{
			Set(p[i],1); Set(p[i+1],1);
		}
		else
		{
			Set(p[i],0); Set(p[i+1],0); continue;
		}
		X/=3;
	}
}
#include "Brunolib.h"
#include <bits/stdc++.h>

using namespace std;

long long Bruno( int N, int A[] ){
	srand(123321);
	//long long xr=827550094985275787;
	vector<int> p;
	for(int i=0;i<N;i++) p.push_back(i);
	random_shuffle(p.begin(),p.end());
	vector<int> v;
	for(int i=0;i<N;i+=2)
	{
		if(A[p[i]]+A[p[i+1]]==0) continue;
		if(A[p[i]]==0&&A[p[i+1]]==1) v.push_back(0);
		else if(A[p[i]]==1&&A[p[i+1]]==0) v.push_back(1);
		else v.push_back(2);
	}
	long long x=0;
	for(int i=v.size()-1;i>=0;i--){x*=3; x+=v[i];}
	return x;
}
#Verdict Execution timeMemoryGrader output
Fetching results...