Submission #128011

#TimeUsernameProblemLanguageResultExecution timeMemory
128011UtahaBroken Device (JOI17_broken_device)C++14
100 / 100
65 ms3320 KiB
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back

void Anna( int N, long long X, int K, int P[] ){
	int partner[150];
	srand(123987654);
	vector<int> s;

	vector<int> v;
	for(int i=0;i<150;i++) v.pb(i);
	random_shuffle(v.begin(),v.end());
	for(int i=0;i<150;i+=2){
		partner[v[i]]=v[i+1];
		partner[v[i+1]]=v[i];
		s.pb(v[i]);
	}
	// for(int i=0;i<N;i++) cout<<partner[i]<<" \n"[i==N-1];

	X^=0x84d9302917c854LL;
	// std::cout<<X<<'\n';
	// for(long long i=X;i;i/=3) std::cout<<i%3;
	// std::cout<<'\n';
	bool ret[150]={0};
	bool notused[150]={0};
	for(int i=0;i<K;i++){
		notused[P[i]]=1;
	}
	int pt=38;
	for(int i:s){
		long long type=X%3;
		if(type==0){
			if(notused[i]) continue;
			ret[i]=1;
			ret[partner[i]]=0;
		}
		else if(type==1){
			if(notused[partner[i]]) continue;
			ret[i]=0;
			ret[partner[i]]=1;
		}
		else{
			if(notused[i]||notused[partner[i]]) continue;
			ret[i]=ret[partner[i]]=1;
		}
		// std::cout<<X%3<<'\n';
		X/=3;
		if(X==0) break;
		pt--;
		if(pt==0) break;
	}
	// for(int i=0;i<N;i++) std::cout<<ret[i];
	// std::cout<<'\n';
	for(int i=0;i<N;i++) Set(i,ret[i]);
}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
long long Bruno( int N, int A[] ){
	int partner2[150];
	vector<int> s2;
	srand(123987654);

	vector<int> v;
	for(int i=0;i<150;i++) v.pb(i);
	random_shuffle(v.begin(),v.end());
	for(int i=0;i<150;i+=2){
		partner2[v[i]]=v[i+1];
		partner2[v[i+1]]=v[i];
		s2.pb(v[i]);
	}
	// for(int i=0;i<N;i++) cout<<partner2[i]<<" \n"[i==N-1];

	long long ret=0;
	long long base=1;
	for(int i:s2){
		if(A[i]==0&&A[partner2[i]]==0) continue;

		int type=-1;
		if(A[i]==1){
			if(A[partner2[i]]==1) type=2;
			else type=0;
		}
		else type=1;

		// std::cout<<"Bruno: "<<type<<'\n';

		ret+=base*type;
		base*=3;
	}
	// std::cout<<ret<<'\n';
	return ret^0x84d9302917c854LL;
}
#Verdict Execution timeMemoryGrader output
Fetching results...