Submission #535494

#TimeUsernameProblemLanguageResultExecution timeMemory
535494flappybirdBroken Device (JOI17_broken_device)C++17
100 / 100
46 ms2728 KiB
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;

typedef pair<int, int> pi;
typedef long long ll;

#define MAX 153

int res[MAX];
bool chkb[MAX];
int arr[MAX];
int ptr;

void print(int i) {
	int a, b, c;
	a = 3 * i;
	b = a + 1;
	c = a + 2;
	int rs = chkb[a] + chkb[b] + chkb[c];
	if (rs >= 2) return;
	vector<int> tx;
	if (rs == 0) {
		int x = arr[ptr] * 2 + arr[ptr + 1];
		ptr += 2;
		if (x == 0) tx = { 0, 1, 1 };
		if (x == 1) tx = { 0, 0, 1 };
		if (x == 2) tx = { 1, 1, 0 };
		if (x == 3) tx = { 1, 1, 1 };
	}
	else {
		if (chkb[a]) {
			if (arr[ptr]) tx = { 0, 1, 0 }, ptr++;
			else {
				if (arr[ptr + 1]) tx = { 0, 0, 1 };
				else tx = { 0, 1, 1 };
				ptr += 2;
			}
		}
		else {
			if (arr[ptr]) tx = chkb[b] ? (vector<int>{ 1, 0, 1 }) : vector<int>{ 0, 1, 0 };
			else tx = { 1, 0, 0 };
			ptr += 1;
		}
	}
	tie(res[a], res[b], res[c]) = tie(tx[0], tx[1], tx[2]);
}

void Anna(int N, long long X, int K, int P[]) {
	memset(res, 0, sizeof(res));
	memset(arr, 0, sizeof(arr));
	memset(chkb, 0, sizeof(chkb));
	ptr = 0;
	int i;
	for (i = 0; i < 60; i++) if (X & (1LL << (ll)(59 - i))) arr[i] = 1;
	for (i = 0; i < K; i++) chkb[P[i]] = true;
	for (i = 0; i < 50; i++) print(i);
	for (i = 0; i < 150; i++) Set(i, res[i]);
}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

vector<vector<int>> vv = { {}, {0, 1}, {1}, {0, 0}, {0}, {1}, {1, 0}, {1, 1} };

int get(int a, int b, int c) {
	return a * 4 + b * 2 + c;
}

long long Bruno( int N, int A[] ){
	ll res = 0;
	int i;
	int a, b, c;
	a = 0;
	b = 1;
	c = 2;
	vector<int> bits;
	for (i = 0; i < 50; i++) {
		int x = get(A[a], A[b], A[c]);
		bits.insert(bits.end(), vv[x].begin(), vv[x].end());
		a += 3;
		b += 3;
		c += 3;
	}
	for (i = 0; i < 60; i++) if (bits[i]) res += 1LL << (ll)(59 - i);
	return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...