Submission #100076

#TimeUsernameProblemLanguageResultExecution timeMemory
100076jamielimBroken Device (JOI17_broken_device)C++14
0 / 100
65 ms3072 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; void Anna( int N, long long X, int K, int P[] ){ if(K==1){ if(P[0]<=75){ for(int i=0;i<=75;i++)Set(i,0); for(int i=76;i<N;i++){ Set(i,(X%2)); X/=2; } }else{ for(int i=0;i<N;i++){ Set(i,(X%2)); X/=2; } } return; } int arr[N]; for(int i=0;i<K;i++){ arr[P[i]]=-1; } int poss=0; int k=__builtin_ctz(X); X>>=k; for(int i=0;i<N-1;i++){ if(X==0)break; if(i<poss)continue; if(X%2==0){ if(arr[i]!=-1){ arr[i]=1; arr[i+1]=0; poss=i+2; } }else{ if(arr[i]!=-1&&arr[i+1]!=-1){ arr[i]=1; arr[i+1]=1; poss=i+2; } } X>>=1; } for(int i=0;i<N;i++){ if(arr[i]!=1&&arr[i]!=0)arr[i]=0; Set(i,arr[i]); } return; }
#include "Brunolib.h" #include <bits/stdc++.h> using namespace std; long long Bruno( int N, int A[] ){ long long ans=0; for(int i=0;i<=75;i++){ if(A[i]==1){ for(long long j=0;j<=75;j++){ ans+=(long long)(A[i])*(1<<j); if((1<<j)>1000000000000000000)break; } return ans; } } for(long long i=76;i<N;i++){ ans+=(long long)(A[i])*(1<<(i-76)); if((1<<(i-76))>1000000000000000000)break; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...