Submission #954938

#TimeUsernameProblemLanguageResultExecution timeMemory
954938logangdBroken Device (JOI17_broken_device)C++14
8 / 100
30 ms2752 KiB
#include <bits/stdc++.h>
#include "Annalib.h"
typedef long long ll;
using namespace std;
void Anna( int N, ll X, int K, int P[] ){
  int ar[N]={0},s[60]={0};
  for(int i=0;i<60;i++)
    if(X&((ll)1<<i))s[i]=1;
  for(int i=0;i<N;i++)ar[i]=-1;
  for(int i=0;i<K;i++)ar[P[i]]=0;
  int curr=0;
  for(int i=0;i<N;i++){
    if(s[curr]==0){
      if(1<i&&ar[i-2]==1&&ar[i-1]!=1&&ar[i]!=1)continue;
      if(ar[i]!=0&&ar[i+2]!=0){
        ar[i]=ar[i+2]=1;
        ar[i+1]=0;
        curr++;
        i++;
      }
    }else{
      if(ar[i]!=-1)continue;
      if(i==0||ar[i-1]==1)ar[i]=1,curr++;
      else if(1<i&&ar[i-2]!=1)ar[i]=1,curr++;
    }
    if(59<curr)break;
  }
  //for(int i=0;i<60;i++)cout<<s[i];
  //cout<<endl;
  for(int i=0;i<N;i++){
    //if(ar[i]==1)cout<<1;
    //else cout<<0;
    if(ar[i]==1)Set(i,1);
    else Set(i,0);
  }
  //cout<<endl;
}
#include <bits/stdc++.h>
#include "Brunolib.h"
typedef long long ll;
using namespace std;
ll Bruno(int N, int A[]){
    ll ans=0, curr=0;
    for(int i=0;i<N;i++){
        if(curr>59)break;
        if(i<N-2&&A[i]==1&&A[i+1]==0&&A[i+2]==1){  
            //cout<<0; 
            curr++,i++;
        }else if(A[i]==1&&(i<2||(A[i-1]!=0||A[i-2]!=1))){
            ans|=((ll)1<<curr),curr++;
            //cout<<1;
        }
    }
    //cout<<endl<<ans<<endl;
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...