Submission #1219751

#TimeUsernameProblemLanguageResultExecution timeMemory
1219751peraBroken Device (JOI17_broken_device)C++20
0 / 100
0 ms320 KiB
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;
void Anna( int N, long long X, int K, int P[] ){
   vector<int> mark(N);
   for(int i = 0;i < K;i ++){
      mark[P[i]] = 1;
   }
   for(int i = 0;i < N;i += 3){
      int c = mark[i] + mark[i + 1] + mark[i + 2];
      if(c >= 2){
         continue;
      }
      int bit = X % 2;
      int nbit = (X / 2) % 2;
      if(c == 0){
         if(bit && nbit){
            Set(i , 1);
            Set(i + 1 , 1);
            Set(i + 2 , 1);
         }else if(bit && !nbit){
            Set(i , 1);
            Set(i + 1 , 0);
            Set(i + 2 , 1);
         }else if(!bit && nbit){
            Set(i , 0);
            Set(i + 1 , 1);
            Set(i + 2 , 0);
         }else{
            Set(i , 0);
            Set(i + 1 , 1);
            Set(i + 2 , 1);
         }
         X /= 2;  
         X /= 2;
      }else{
         if(bit){
            if(mark[i + 2]){
               Set(i , 1);
               Set(i + 1 , 1);
               Set(i + 2 , 0);
            }else{
               Set(i , 0);
               Set(i + 1 , 0);
               Set(i + 2 , 1);
            }
            X /= 2;
         }else{
            if(!mark[i]){
               Set(i , 1);
               Set(i + 1 , 0);
               Set(i + 2 , 0);
            }else{
               if(nbit){
                  Set(i , 0);
                  Set(i + 1 , 1);
                  Set(i + 2 , 0);
               }else{
                  Set(i , 0);
                  Set(i + 1 , 1);
                  Set(i + 2 , 1);
               }
               X /= 2;
            }
            X /= 2;
         }
      }
   }
}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;
long long Bruno( int N, int A[] ){
   long long ans = 0;
   int bit = 0;
   for(int i = 0;i < N;i += 3){
      if(A[i] + A[i + 1] + A[i + 2] == 0){
         continue;
      }
      if(A[i] && A[i + 1] && !A[i + 2]){
         ans += (1LL << bit);
         bit += 1;
      }else if(!A[i] && !A[i + 1] && A[i + 2]){
         ans += (1LL << bit);
         bit += 1;
      }else if(A[i] && A[i + 1] && A[i + 2]){
         ans += (1LL << bit);
         ans += (1LL << (bit + 1));
         bit += 2;
      }else if(A[i] && !A[i + 1] && !A[i + 2]){
         bit += 1;
      }else if(A[i] && !A[i + 1] && A[i + 2]){
         ans += (1LL << bit);
         bit += 2;
      }else if(!A[i] && A[i + 1] && !A[i + 2]){
         ans += (1LL << (bit + 1));
         bit += 2;
      }else{
         bit += 2;
      }  
   }
   return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...