Submission #954893

#TimeUsernameProblemLanguageResultExecution timeMemory
954893Saul0906Broken Device (JOI17_broken_device)C++14
85 / 100
32 ms2924 KiB
#include "Annalib.h"
#include <bits/stdc++.h>
#define rep(a,b,c) for(int a=b; a<c; a++)
#define repa(a,b) for(auto a: b)
#define repr(a,b,c) for(int a=b-1; a>c-1; a--)

using namespace std;

void Anna( int N, long long X, int K, int P[] ){
	bool b[150]{};
	rep(i,0,K) b[P[i]]=1;
	int d[38]{}, p=0;
	while(X){
		d[p++]=X%3;
		X/=3;
	}
	p=0;
	for( int i = 0; i < N; i+=2 ){
		if(!b[i] && !b[i+1] && p<38){
			if(d[p]==0) Set(i,1), Set(i+1,1); //1,1 = 0
			if(d[p]==1) Set(i,1), Set(i+1,0); //1,0 = 1
			if(d[p]==2) Set(i,0), Set(i+1,1); //0,1 = 2
			p++;
		}else Set(i,0), Set(i+1,0);
	}
}
#include "Brunolib.h"
#define rep(a,b,c) for(int a=b; a<c; a++)
#define ll long long
#include <bits/stdc++.h>

using namespace std;

ll fpow(ll x, ll y){
	if(!y) return 1;
	if(y&1) return fpow(x,y-1)*x;
	ll z=fpow(x,y/2);
	return z*z;
}

long long Bruno( int N, int A[] ){
	ll d[38]{}, p=0;
	ll X=0;
	rep(i,0,N){
		if(A[i]==0 && A[i+1]==0){
			i++;
			continue;
		}
		if(A[i]==1 && A[i+1]==1) d[p++]=0;
		if(A[i]==1 && A[i+1]==0) d[p++]=1;
		if(A[i]==0 && A[i+1]==1) d[p++]=2;
		i++;
		if(p==38) break;
	}
	rep(i,0,38){
		X+=d[i]*fpow(3,i);
	}
	return X;
}
#Verdict Execution timeMemoryGrader output
Fetching results...