| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 1235376 | chaeryeong | Broken Device (JOI17_broken_device) | C++20 | 20 ms | 1588 KiB | 
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
void Anna (int N, ll X, int K, int P[]) {
  const int B = 60;
  vector <int> bad(N, 0);
  for (int i = 0; i < K; i++) {
    bad[P[i]] = 1;
  }
/*  for (auto i : bad) {
    cout << i << " ";
  }
  cout << '\n';
  cout << '\n';
  for (int i = 0; i < B; i++) {
    cout << (X >> i) % 2 << " ";
  }
  cout << '\n';*/
  vector <int> ret(N, 0);
  int b = 0;
  for (int i = 0; i < B; i++) {
    if (b >= N) {
      break;
    }
    int cnt = 0;
    bool flag = 0;
    for (int j = b; j < N; j += 2) {
      if (!bad[j] && !bad[j + 1]) {
        if (cnt) {
          ret[j] = ret[j + 1] = 1;
          cnt--;
        } else {
          ret[j] = (X >> i) & 1;
          b = j + 2;
          flag = 1;
          break;
        }
      } else if (!bad[j] && bad[j + 1]) {
        if (cnt) {
          ret[j] = ret[j + 1] = 0;
          cnt++;
        } else {
          ret[j] = (X >> i) & 1;
          ret[j + 1] = 0;
          b = j + 2;
          flag = 1; break;
        }
      } else if (bad[j] && !bad[j + 1]) {
        if (cnt == 0) {
          if (((X >> i) & 1) == 0) {
            ret[j + 1] = 0;
            b = j + 2; flag = 1; break;
          }
        }
        ret[j + 1] = 1; 
      } else {
        if (cnt == 0) {
          if (((X >> i) & 1) == 0) {
            ret[j + 1] = 0;
            b = j + 2; flag = 1; break;
          }
        }
        cnt++;
      }
    }
   // cout << i << ": " << flag << " " << b << '\n';
    if (!flag) {
      break;
    }
  }
  for (int i = 0; i < N; i++) {
    Set(i, ret[i]);
  }
}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll Bruno (int N, int A[]) {
  const int B = 60;
  vector <int> bits;
  for (int i = 0; i < N; i += 2) {
    if (A[i] == 0 && A[i + 1] == 0) {
      bits.push_back(0);
    } else if (A[i] == 1 && A[i + 1] == 0) {
      bits.push_back(1);
    } else if (A[i] == 0 && A[i + 1] == 1) {
      
    } else {
      bits.pop_back();
    }
  }
  ll ret = 0;
  for (int i = 0; i < (int)bits.size(); i++) {
    if (bits[i]) {
      ret += 1ll << i;
    }
  }
  return ret;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
