제출 #1236766

#제출 시각아이디문제언어결과실행 시간메모리
1236766caacrugonBroken Device (JOI17_broken_device)C++20
0 / 100
20 ms1344 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; void Anna(int N, long long X, int K, int P[]){ vector<int> ln(N,0); for(int i=0;i<K;i++){ ln[P[i]]=-1; } vector<int> bits; for(int i=0;i<N;++i){ if((X>>i)==0)break; bits.push_back((X>>i)&1LL); } int z=0; for(int i=2;i<N;i+=3){ if(z>=bits.size()) break; if(ln[i-2]==-1 && ln[i-1]==-1 && ln[i]==-1){ continue; }else if(ln[i-2]==0 && ln[i-1]==0 && ln[i]==0 && bits[z]==1 && bits[z+1]==1){ ln[i-2]=1; ln[i-1]=1; ln[i]=1; z+=2; }else if(ln[i-2]==0 && ln[i-1]==0 && (ln[i]==0 || ln[i]==-1) && bits[z]==1 && bits[z+1]==0){ ln[i-2]=1; ln[i-1]=1; z+=2; }else if(ln[i-2]==0 && (ln[i-1]==0 || ln[i-1]==-1) && ln[i]==0 && bits[z]==0 && bits[z+1]==1){ ln[i-2]=1; ln[i]=1; z+=2; }else if(ln[i-2]==0 && (ln[i-1]==0 || ln[i-1]==-1) && (ln[i]==0 || ln[i]==-1) && bits[z]==0 && bits[z+1]==0){ ln[i-2]=1; z+=2; }else if((ln[i-2]==0 || ln[i-2]==-1) && ln[i-1]==0 && ln[i]==0 && bits[z]==1){ ln[i-1]=1; ln[i]=1; z++; }else if((ln[i-2]==0 || ln[i-2]==-1) && ln[i-1]==0 && (ln[i]==0 || ln[i]==-1) && bits[z]==0){ ln[i-1]=1; z++; }else if((ln[i-2]==0 || ln[i-2]==-1) && (ln[i-1]==0 || ln[i-1]==-1) && ln[i]==0 && bits[z]==1){ ln[i]=0; z++; } } for(int i=0;i<N;i++){ if(ln[i]==1) Set(i,1); else Set(i,0); } }
#include "Brunolib.h" #include <bits/stdc++.h> using namespace std; #define ll long long long long Bruno(int N, int A[]){ vector<ll> bits; ll x=0; for(int i=2;i<N;i+=3){ if(A[i-2]==0 && A[i-1]==0 && A[i]==0)continue; else if(A[i-2]==1 && A[i-1]==1 && A[i]==1){ bits.push_back(1); bits.push_back(1); }else if(A[i-2]==1 && A[i-1]==1 && A[i]==0){ bits.push_back(1); bits.push_back(0); }else if(A[i-2]==1 && A[i-1]==0 && A[i]==1){ bits.push_back(0); bits.push_back(1); }else if(A[i-2]==1 && A[i-1]==0 && A[i]==0){ bits.push_back(0); bits.push_back(0); }else if(A[i-2]==0 && A[i-1]==1 && A[i]==1){ bits.push_back(1); }else if(A[i-2]==0 && A[i-1]==1 && A[i]==0){ bits.push_back(0); }else if(A[i-2]==0 && A[i-1]==0 && A[i]==1){ bits.push_back(1); } } for(int i=bits.size()-1;i>=0;i--){ x=(x<<1)|bits[i]; } return x; }
#Verdict Execution timeMemoryGrader output
Fetching results...