Submission #71486

#TimeUsernameProblemLanguageResultExecution timeMemory
71486BruteforcemanBroken Device (JOI17_broken_device)C++11
0 / 100
74 ms11792 KiB
#include "Annalib.h"

void Anna( int N, long long X, int K, int P[] ){
	int broke[N];
	int val[N];
	for(int i = 0; i < N; i++) {
		broke[i] = 0;
		val[i] = 0;
	}
	for(int i = 0; i < K; i++) {
		broke[P[i]] = 1;
	}
	int bit = 0;
	for(int i = 0; i < N; i += 3) {
		if(bit > 62) break;
		int cnt = broke[i] + broke[i+1] + broke[i+2];
		if(cnt == 1) {
			if((X >> bit) & 1) {
				if(!broke[i]) val[i] = 1;
				else if (!broke[i+1]) val[i+1] = 1;
				else val[i+2] = 1;
			} else {
				if(!broke[i]) val[i] = 1;
				if(!broke[i+1]) val[i+1] = 1;
				if(!broke[i+2]) val[i+2] = 1;
			} 
			++bit;
		} else if (cnt == 0) {
			val[i] = 1;
			if((X >> bit) & 1) val[i+1] = 0;
			else val[i+1] = 1;
			++bit;
		}
	}
	for(int i = 0; i < N; i++) {
		Set(i, val[i]);
	} 
}
#include "Brunolib.h"

long long Bruno( int N, int A[] ){
	int bit = 0;
	long long ans = 0;
	for(int i = 0; i < N; i += 3) {
		if(bit > 62) break;
		int cnt = A[i] + A[i+1] + A[i+2];
		if(cnt) {
			if(cnt & 1) ans |= 1LL << bit;
			++bit; 
		}
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...