제출 #556423

#제출 시각아이디문제언어결과실행 시간메모리
556423blueBroken Device (JOI17_broken_device)C++17
41 / 100
40 ms2444 KiB
#include "Annalib.h"
#include <vector>
#include <iostream>
using namespace std;

namespace
{
  using vi = vector<int>;
  using ll = long long;
}


void Anna( int N, long long X, int K, int P[] ){
  vi bit(60);
  // cerr << "X = " << X << '\n';
  for(int i = 0; i < 60; i++)
  {
    bit[i] = X%2;
    X /= 2;
  }

  // for(int z = 0; z < 60; z++)
  //   cerr << bit[z] << ' ';
  // cerr << "\n";

  vi bad(N, 0);
  for(int i = 0; i < K; i++)
    bad[P[i]] = 1;

  int cb = 0;

  vi encoded(N, 0);

  // for(int i = 0; i < N; i++)
  //   cerr << bad[i];
  // cerr << "\n";

  for(int i = 0; i+1 < N && cb < 60; i++)
  {
    if(!bad[i] && !bad[i+1])
    {
      // cerr << i << " : " << cb << '\n';
      encoded[i] = 1;
      encoded[i+1] = bit[cb];
      cb++;
      i++;
    }
  }

  // for(int i = 0; i < N; i++)
  //   cerr << encoded[i];
  // cerr << "\n";


  for(int i = 0; i < N; i++)
    Set(i, encoded[i]);
}
#include "Brunolib.h"
#include <vector>
using namespace std;

namespace
{
  using ll = long long;
  using vi = vector<int>;
}

long long Bruno( int N, int A[] )
{
  ll wt = 1;

  ll ans = 0;

  for(int i = 0; i+1 < N; i++)
  {
    if(A[i] == 1)
    {
      ans += wt*A[i+1];
      wt = wt+wt;
      i++;
    }
  }

  return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...