Submission #469074

#TimeUsernameProblemLanguageResultExecution timeMemory
469074OmegamanBroken Device (JOI17_broken_device)C++14
0 / 100
42 ms2876 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 xl = int(log2(X) + 0.5);

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

	bool F[N];

	for ( int i = 0; i < N; i++ ) {
		F[i] = !isInArr(K, P, i);
	}
	
	bool M[N];

	int dh = 0;
	int sc = 0;
	for( int i = 0; i < N; i++) {
		if (d[dh]) {
			if (F[i]) {
				M[i] = 1;
				dh++;
			} else {
				M[i + 0] = 0;
				M[i + 1] = 0;
				i++;
				sc++;
			}
		} else {
			if (sc < 40) {
				if (F[i + 1]) {
					M[i + 0] = 0;
					M[i + 1] = 1;
					dh++;
				} else {
					M[i + 0] = 0;
					M[i + 1] = 0;
					sc++;
				}
				i++;
			} else {
				M[i] = 0;
				dh++;
			}
		}
	}

	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 len = (N < 60 ? N : 60);

	bool d[len];
	for( int i = 0; i < len; i++)
		d[i] = 0;

	int dh = 0;
	int sc = 0;
	for( int i = 0; i < N; i++) {
		if(A[i]) {
			d[dh] = 1;
			dh++;
		} else {
			if (sc < 40) {
				if (A[i + 1]) {
					d[dh] = 0;
					dh++;
				} else {
					sc++;
				}
				i++;
			} else {
				d[dh] = 0;
				dh++;
			}
		}
	}

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

	return X;
}

Compilation message (stderr)

Anna.cpp: In function 'void Anna(int, long long int, int, int*)':
Anna.cpp:12:12: warning: unused variable 'xl' [-Wunused-variable]
   12 |  const int xl = int(log2(X) + 0.5);
      |            ^~
#Verdict Execution timeMemoryGrader output
Fetching results...