| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 1263188 | SzymonKrzywda | Broken Device (JOI17_broken_device) | C++20 | 19 ms | 1344 KiB | 
#include "Annalib.h"
#include <vector>
using namespace std;
void Anna( int N, long long X, int K, int P[] ){
  vector<int> rozklad;
  for (int i = 0; i < 151; i++) {
    rozklad.push_back(X % 2);
    X /= 2;
  }
  
  vector<bool> wartosci(N, 0);
  for (int i = 0; i < K; i++) wartosci[P[i]] = 1;
  int akt = 0;
  for( int i = 0; i < N; i += 3 ){
    int ile_z = wartosci[i] + wartosci[i + 1] + wartosci[i + 2];
    if (ile_z >= 2) {
      Set(i, 0);
      Set(i + 1, 0);
      Set(i + 2, 0);
      continue;
    }
    
    if (ile_z == 0) {
      if (rozklad[akt] == 0 && rozklad[akt + 1] == 0) {
        Set(i, 0);
        Set(i + 1, 1);
        Set(i + 2, 0);
      }
      else if (rozklad[akt] == 0 && rozklad[akt + 1] == 1) {
        Set(i, 1);
        Set(i + 1, 1);
        Set(i + 2, 0);
      }
      else if (rozklad[akt] == 1 && rozklad[akt + 1] == 1) {
        Set(i, 1);
        Set(i + 1, 1);
        Set(i + 2, 1);
      }
      else {
        Set(i, 1);
        Set(i + 1, 0);
        Set(i + 2, 1);
      }
      akt += 2;
    }
    else {
      if (rozklad[akt] == 1) {
        if (wartosci[i]) {
          Set(i, 0);
          Set(i + 1, 1);
          Set(i + 2, 1);
        } 
        else {
          Set(i, 1);
          Set(i + 1, 0);
          Set(i + 2, 0);
        }
        akt++;
      }
      else {
        if (!wartosci[i + 2]) {
          Set(i, 0);
          Set(i + 1, 0);
          Set(i + 2, 1);
        }
        else{
          if (rozklad[akt + 1] == 0) {
            Set(i, 0);
            Set(i + 1, 1);
            Set(i + 2, 0);
          }
          else {
            Set(i, 1);
            Set(i + 1, 1);
            Set(i + 2, 0);
          }
        } 
      }
    }
  
  }
}
#include "Brunolib.h"
#include <iostream>
using namespace std;
long long Bruno( int N, int A[] ){
  long long w = 0;
  __int128_t akt = 1;
  //cout << "DUPA\n";
  for (int i = 0; i < 9; i += 3) {
   // cout << A[i] << ' ' << A[i + 1] << ' ' << A[i + 1] << '\n';
    if (akt > 1e18) continue;
    if (A[i] == 0 && A[i + 1] == 0 && A[i + 2] == 0) {continue;}
    if (A[i] == 0 && A[i + 1] == 0 && A[i + 2] == 1) {
      akt *= 2;
    }
    if (A[i] == 0 && A[i + 1] == 1 && A[i + 2] == 0) {
      akt *= 4;
    }
    if (A[i] == 0 && A[i + 1] == 1 && A[i + 2] == 1) {
      w += akt;
      akt *= 2;
    }
    if (A[i] == 1 && A[i + 1] == 0 && A[i + 2] == 0) {
      w += akt;
      akt *= 2;
    }
    if (A[i] == 1 && A[i + 1] == 0 && A[i + 2] == 1) {
      w += akt;
      akt *= 4;
    }
    if (A[i] == 1 && A[i + 1] == 1 && A[i + 2] == 0) {
      akt *= 2;
      w += akt;
      akt *= 2;
    }
    if (A[i] == 1 && A[i + 1] == 1 && A[i + 2] == 1) {
      w += akt;
      akt *= 2;
      w += akt;
      akt *= 2;
    }
  }
  return (long long)akt;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
