Submission #1236785

#TimeUsernameProblemLanguageResultExecution timeMemory
1236785caacrugonBroken Device (JOI17_broken_device)C++20
0 / 100
19 ms1520 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(z+1<bits.size()){
      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...