Submission #990639

#TimeUsernameProblemLanguageResultExecution timeMemory
990639Saul0906Broken Device (JOI17_broken_device)C++14
85 / 100
27 ms2632 KiB
#include "Annalib.h" #include <bits/stdc++.h> #define rep(a,b,c) for(int a=b; a<c; a++) #define repa(a,b) for(auto a: b) #define repr(a,b,c) for(int a=b-1; a>c-1; a--) using namespace std; void Anna( int N, long long X, int K, int P[] ){ mt19937_64 rnd(123456789); bool b[150]{}; int pp[150]; rep(i,0,150) pp[i]=i; reverse(pp,pp+150); //shuffle(pp,pp+150,rnd); rep(i,0,K) b[P[i]]=1; int d[38]{}, p=0; while(X){ d[p++]=X%3; X/=3; } p=0; for( int i = 0; i < N; i+=2 ){ if(!b[pp[i]] && !b[pp[i+1]] && p<38){ if(d[p]==0) Set(pp[i],1), Set(pp[i+1],1); //1,1 = 0 if(d[p]==1) Set(pp[i],1), Set(pp[i+1],0); //1,0 = 1 if(d[p]==2) Set(pp[i],0), Set(pp[i+1],1); //0,1 = 2 p++; }else Set(pp[i],0), Set(pp[i+1],0); } }
#include "Brunolib.h" #define rep(a,b,c) for(int a=b; a<c; a++) #define ll long long #include <bits/stdc++.h> using namespace std; ll fpow(ll x, ll y){ if(!y) return 1; if(y&1) return fpow(x,y-1)*x; ll z=fpow(x,y/2); return z*z; } long long Bruno( int N, int A[] ){ mt19937_64 rnd(123456789); ll d[38]{}, p=0; ll X=0; int pp[150]; rep(i,0,150) pp[i]=i; reverse(pp,pp+150); //shuffle(pp,pp+150,rnd); rep(i,0,N){ if(A[pp[i]]==0 && A[pp[i+1]]==0){ i++; continue; } if(A[pp[i]]==1 && A[pp[i+1]]==1) d[p++]=0; if(A[pp[i]]==1 && A[pp[i+1]]==0) d[p++]=1; if(A[pp[i]]==0 && A[pp[i+1]]==1) d[p++]=2; i++; if(p==38) break; } rep(i,0,38){ X+=d[i]*fpow(3,i); } return X; }
#Verdict Execution timeMemoryGrader output
Fetching results...