Submission #294931

#TimeUsernameProblemLanguageResultExecution timeMemory
294931BTheroBroken Device (JOI17_broken_device)C++17
41 / 100
65 ms3352 KiB
// chrono::system_clock::now().time_since_epoch().count()
#include "Annalib.h"
#include<bits/stdc++.h>

#define pb push_back
#define eb emplace_back
#define mp make_pair
#define fi first
#define se second
#define all(x) (x).begin(), (x).end()
#define debug(x) cerr << #x << " = " << x << endl;

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;

namespace {
  int n, k, bad_pos[45];
  int is_bad[150];
  ll msg;
  
  int bit(ll x, int p) {
    if (p > 60) return 0;
    return (x >> p) & 1;
  }
  
  void solve() {
    assert(n % 2 == 0);
    fill(is_bad, is_bad + n, 0);
  
    for (int i = 0; i < k; ++i) {
      is_bad[bad_pos[i]] = 1;
    }
    
    int ptr = 0;
  
    for (int i = 0; i < n; i += 2) {
      if (is_bad[i] || is_bad[i + 1]) {
        Set(i, 0);
        Set(i + 1, 0);
      }
      else {
        Set(i, 1);
        Set(i + 1, bit(msg, ptr++));
      }
    }
  }
};

void Anna( int N, long long X, int K, int P[] ){
  n = N;
  msg = X;
  k = K;
  
  for (int i = 0; i < k; ++i) {
    bad_pos[i] = P[i];
  }

  solve();
}
// chrono::system_clock::now().time_since_epoch().count()
#include "Brunolib.h"
#include<bits/stdc++.h>

#define pb push_back
#define eb emplace_back
#define mp make_pair
#define fi first
#define se second
#define all(x) (x).begin(), (x).end()
#define debug(x) cerr << #x << " = " << x << endl;

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;

namespace {
  int n, arr[150];
  
  ll solve() {
    assert(n % 2 == 0);
    ll ret = 0;
    int ptr = 0;
  
    for (int i = 0; i < n; i += 2) {
      if (arr[i] == 0) {
        continue;
      }
      
      if (arr[i + 1] == 1) {
        ret += (1ll << ptr);
      }
      
      ptr++;
    }
    
    return ret;
  }
};

long long Bruno( int N, int A[] ){
  n = N;
  
  for (int i = 0; i < n; ++i) {
    arr[i] = A[i];
  }

  return solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...