Submission #1337815

#TimeUsernameProblemLanguageResultExecution timeMemory
1337815boclobanchatBroken Device (JOI17_broken_device)C++20
69 / 100
18 ms1572 KiB
#include"Annalib.h"
#include<bits/stdc++.h>
using namespace std;
bool ck[222],ans[222];
int f(int N,long long inf)
{
	int st=-1;
	for(int i=60;i+1&&st<N;i--)
	{
		int nex=st+1;
		if(!((inf>>i)%2)) nex=st+2;
		while(ck[nex]&&nex<N) nex+=2;
		st=nex;
	}
	return st;
}
void Anna(int N,long long X,int K,int P[])
{
	long long inf=0;
	for(int i=0;i<60;i++) inf=inf*2+((X>>i)%2);
	for(int i=0;i<K;i++) ck[P[i]]=true;
	if(f(N,inf)>f(N,((1LL<<61)-1)^inf)) inf^=(1LL<<61)-1;
	int st=-1;
	for(int i=60;i+1;i--)
	{
		int nex=st+1;
		if(!((inf>>i)%2)) nex=st+2;
		while(ck[nex]) nex+=2;
		ans[nex]=true,st=nex;
	}
	for(int i=0;i<N;i++) Set(i,ans[i]);
	for(int i=0;i<N;i++) ck[i]=ans[i]=false;
}
#include"Brunolib.h"
#include<bits/stdc++.h>
using namespace std;
long long Bruno(int N,int A[])
{
	long long ans=0,pw=1;
	int st=-1,cc=0;
	for(int i=0;i<N;i++) if(A[i])
	{
		cc++;
		ans=ans+(i-st)%2*pw,st=i,pw*=2;
	}
	if(ans%2==0) ans/=2;
	else ans=((ans/2)^((1LL<<60)-1));
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...