Submission #294544

#TimeUsernameProblemLanguageResultExecution timeMemory
294544nandonathanielBroken Device (JOI17_broken_device)C++14
100 / 100
51 ms3584 KiB
#include "Annalib.h" #include "bits/stdc++.h" using namespace std; int rusak[150],bits[65],ans[150]; // 100 -> "0" // 001 -> "1" // 110 -> "1" // 010 -> "00" // 011 -> "01" // 101 -> "10" // 111 -> "11" void Anna( int N, long long X, int K, int P[] ){ memset(rusak,0,sizeof(rusak)); for(int i=0;i<K;i++)rusak[P[i]]=1; for(int i=0;i<63;i++){ if(X & (1LL<<i))bits[i]=1; else bits[i]=0; } int j=0; for(int i=0;i<N;i+=3){ int byk=rusak[i]+rusak[i+1]+rusak[i+2]; if(byk>1){ ans[i]=0;ans[i+1]=0;ans[i+2]=0; continue; } if(byk==0){ if(bits[j]==0 && bits[j+1]==0){ ans[i]=0;ans[i+1]=1;ans[i+2]=0; } else if(bits[j]==0 && bits[j+1]==1){ ans[i]=0;ans[i+1]=1;ans[i+2]=1; } else if(bits[j]==1 && bits[j+1]==0){ ans[i]=1;ans[i+1]=0;ans[i+2]=1; } else{ ans[i]=1;ans[i+1]=1;ans[i+2]=1; } j+=2; } else{ if(bits[j]==0){ if(!rusak[i]){ ans[i]=1;ans[i+1]=0;ans[i+2]=0; j++; } else{ if(bits[j+1]==0){ ans[i]=0;ans[i+1]=1;ans[i+2]=0; } else{ ans[i]=0;ans[i+1]=1;ans[i+2]=1; } j+=2; } } else{ if(!rusak[i+2]){ ans[i]=0;ans[i+1]=0;ans[i+2]=1; } else{ ans[i]=1;ans[i+1]=1;ans[i+2]=0; } j++; } } } for(int i=0;i<N;i++)Set(i,ans[i]); }
#include "Brunolib.h" #include "bits/stdc++.h" using namespace std; // 100 -> "0" // 001 -> "1" // 110 -> "1" // 010 -> "00" // 011 -> "01" // 101 -> "10" // 111 -> "11" long long Bruno( int N, int A[] ){ vector<int> bits; for(int i=0;i<N;i+=3){ if(A[i]==1 && A[i+1]==0 && A[i+2]==0){ bits.push_back(0); } else if(A[i]==0 && A[i+1]==0 && A[i+2]==1){ bits.push_back(1); } else if(A[i]==1 && A[i+1]==1 && A[i+2]==0){ bits.push_back(1); } else if(A[i]==0 && A[i+1]==1 && A[i+2]==0){ bits.push_back(0);bits.push_back(0); } else if(A[i]==0 && A[i+1]==1 && A[i+2]==1){ bits.push_back(0);bits.push_back(1); } else if(A[i]==1 && A[i+1]==0 && A[i+2]==1){ bits.push_back(1);bits.push_back(0); } else if(A[i]==1 && A[i+1]==1 && A[i+2]==1){ bits.push_back(1);bits.push_back(1); } } long long ans=0; for(int i=0;i<60;i++){ if(bits[i])ans+=(1LL<<i); } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...