Submission #1152209

#TimeUsernameProblemLanguageResultExecution timeMemory
1152209siewjhBroken Device (JOI17_broken_device)C++20
100 / 100
22 ms1560 KiB
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
void s3(int p, int v1, int v2, int v3){
	Set(p, v1); Set(p + 50, v2); Set(p + 100, v3);
}
void Anna(int N, ll X, int K, int P[]){
	vector<bool> br(N, 0);
	for (int i = 0; i < K; i++) br[P[i]] = 1;
	int id = 0;
	for (int i = 0; i <= 59; id++){
		int bt = (int)(br[id]) + br[id + 50] + br[id + 100];
		if (bt >= 2){
			s3(id, 0, 0, 0); continue;
		}
		ll v = X & (1ll << i), v2 = X & (1ll << (i + 1));
		if (!v){
			if (!v2){
				if (br[id + 50]){
					s3(id, 0, 0, 1); i++;
				}
				else if (br[id + 100]){
					s3(id, 1, 1, 0); i++;
				}
				else{
					s3(id, 0, 1, 1); i += 2;
				}
			}
			else{
				if (bt == 0){
					s3(id, 1, 1, 1); i += 2;
				}
				else if (br[id + 100]){
					s3(id, 1, 1, 0); i++;
				}
				else{
					s3(id, 0, 0, 1); i++;
				}
			}
		}
		else{
			if (!v2){
				if (!br[id]){
					s3(id, 1, 0, 0); i += 2;
				}
				else{
					s3(id, 0, 1, 0); i++;
				}
			}
			else{
				if (br[id] || br[id + 100]){
					s3(id, 0, 1, 0); i++;
				}
				else{
					s3(id, 1, 0, 1); i += 2;
				}
			}
		}
	}
	while (id < 50){
		s3(id, 0, 0, 0); id++;
	}
}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll Bruno( int N, int A[] ){
	ll ans = 0;
	for (int i = 0, id = 0; id < 50; id++){
		int val = (A[id] << 2) + (A[id + 50] << 1) + A[id + 100];
		if (val == 0) continue;
		else if (val == 1 || val == 6) i++;
		else if (val == 2){
			ans += (1ll << i); i++;
		}
		else if (val == 3) i += 2;
		else if (val == 4){
			ans += (1ll << i); i += 2;
		}
		else if (val == 5){
			ans += (1ll << i) + (1ll << (i + 1)); i += 2;
		}
		else{
			ans += (1ll << (i + 1)); i += 2;
		}
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...