Submission #468700

#TimeUsernameProblemLanguageResultExecution timeMemory
468700OmegamanBroken Device (JOI17_broken_device)C++14
0 / 100
127 ms262148 KiB
#include "Annalib.h"
#include <math.h>

bool isInArr(int ArrLen, int Arr[], int val) {
	for ( int i = 0; i < ArrLen; i++ )
		if (Arr[i] == val)
			return true;
	return false;
}

void Anna(int N, long long X, int K, int P[]){

	const int XLen = int(log2(X) + 0.5);

	bool XArr[XLen];

	long long x = X;
	for( int i = 0; i < XLen; i++ ){
		XArr[i] = x%2;	
		x /= 2;
	}
	
	bool M[N];

	for( int i = 0; i < N; i += 7){
		const int j = (i/7)*4;
		const bool d1 = ((j+0) < XLen) ? XArr[j + 0] : 0;
		const bool d2 = ((j+1) < XLen) ? XArr[j + 1] : 0;
		const bool d3 = ((j+2) < XLen) ? XArr[j + 2] : 0;
		const bool d4 = ((j+3) < XLen) ? XArr[j + 3] : 0;
		const bool p1 = (d1+d2+d4) % 2;
		const bool p2 = (d1+d3+d4) % 2;
		const bool p3 = (d3+d2+d4) % 2;

		M[i + 0] = p1;
		M[i + 1] = p2;
		M[i + 2] = d1;
		M[i + 3] = p3;
		M[i + 4] = d2;
		M[i + 5] = d3;
		M[i + 6] = d4;
	}


	for ( int i = 0; i < N; i++ ) {
		Set(i, (int)M[i]);
	}
}
#include "Brunolib.h"

long long Bruno( int N, int A[] ){
	long long X = 0;
	long long inc = 1;

	int MLen = int((double)N/7.0*4);

	int M[MLen];

	for( int i = 0; i < N; i += 7){
		int j = i/7*4;
		bool p1 = A[i + 0];
		bool p2 = A[i + 1];
		bool d1 = A[i + 2];
		bool p3 = A[i + 3];
		bool d2 = A[i + 4];
		bool d3 = A[i + 5];
		bool d4 = A[i + 6];

		const int e1 = (p1+d1+d2+d4) % 2;
		const int e2 = (p2+d1+d3+d4) % 2;
		const int e3 = (p3+d3+d2+d4) % 2;

		const int e = e1+e2*2+e3*4;

		if(e == 3) d1 = !d1;
		if(e == 5) d2 = !d2;
		if(e == 6) d3 = !d3;
		if(e == 7) d4 = !d4;

		M[j + 0] = d1;
		M[j + 1] = d2;
		M[j + 2] = d3;
		M[j + 3] = d4;
	}

	for (int i = 0; i < MLen; i++) {
		X += inc * M[i];
		inc *= 2;
	}

	return X;
}
#Verdict Execution timeMemoryGrader output
Fetching results...