Submission #1319722

#TimeUsernameProblemLanguageResultExecution timeMemory
1319722PlayVoltzBroken Device (JOI17_broken_device)C++20
41 / 100
29 ms1528 KiB
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define fi first
#define se second

void Anna(int n, long long x, int k, int p[]){
	vector<bool> die(n, 0), res1(n, 0), res2(n, 0);
	for (int i=0; i<k; ++i)die[p[i]]=1;
	bool first1=1, first2=1;
	long long b1=0, b2=0;
	for (int i=0; i<n/2&&b1<60; ++i){
		if (die[i]&&die[i+n/2])continue;
		if (first1){
			if (!die[i])res1[i]=1, first1=0;
			continue;
		}
		if (!die[i]&&!die[i+n/2]){
			if ((1ll<<b1)&x)res1[i]=1;
			else res1[i+n/2]=1;
			++b1;
		}
		else if (die[i]){
			if (!((1ll<<b1)&x))res1[i+n/2]=1, ++b1;
		}
		else{
			if ((1ll<<b1)&x)res1[i]=1, ++b1;
		}
	}
	for (int i=0; i<n/2&&b2<60; ++i){
		if (die[i]&&die[i+n/2])continue;
		if (first2){
			if (!die[i+n/2])res2[i+n/2]=1, first2=0;
			continue;
		}
		if (!die[i]&&!die[i+n/2]){
			if ((1ll<<b2)&x)res2[i+n/2]=1;
			else res2[i]=1;
			++b2;
		}
		else if (die[i]){
			if ((1ll<<b2)&x)res2[i+n/2]=1, ++b2;
		}
		else{
			if (!((1ll<<b2)&x))res2[i]=1, ++b2;
		}
	}
	if (b1>b2)for (int i=0; i<n; ++i)Set(i, res1[i]);
	else for (int i=0; i<n; ++i)Set(i, res2[i]);
}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define fi first
#define se second

long long Bruno(int n, int vect[]){
	long long res=0, res2=0, b=0;
	bool first=1, one=1;
	for (int i=0; i<n/2&&b<60; ++i){
		if (first){
			if (vect[i])one=1, first=0;
			else if (vect[i+n/2])one=0, first=0;
			continue;
		}
		if (vect[i])res+=(1ll<<b), ++b;
		else if (vect[i+n/2])res2+=(1ll<<b), ++b;
	}
	if (one)return res;
	return res2;
}
#Verdict Execution timeMemoryGrader output
Fetching results...