Submission #126508

#TimeUsernameProblemLanguageResultExecution timeMemory
126508briansuBroken Device (JOI17_broken_device)C++14
41 / 100
43 ms3312 KiB
#include "Annalib.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define REP(i, n) for(int i = 0;i < n;i ++)

void Anna( int N, long long X, int K, int P[] ){
  vector<ll> v(N, 1);
  REP(i, K)v[P[i]] = 0;
  ll ct = 0;
  ll x = X;
  vector<ll> d(N, 0);
  REP(i, N)
  {
  	if(ct == 61 || i == N-1)d[i] = 0;
  	else if(!(x & 1) && v[i])d[i] = 1, d[i + 1] = 0, i ++, ct ++, x /= 2;
  	else if(v[i] && v[i + 1])d[i] = 1, d[i + 1] = 1, i ++, ct ++, x /= 2;
  	else d[i] = 0;
  }
  if(ct != 61)
  {
  	ct = 0, x = X;
  	REP(i, N)
	  {
	  	if(ct == 61 || i == N-1)d[i] = 0;
	  	else if((x & 1) && v[i])d[i] = 1, d[i + 1] = 0, i ++, ct ++, x /= 2;
	  	else if(v[i] && v[i + 1])d[i] = 1, d[i + 1] = 1, i ++, ct ++, x /= 2;
	  	else d[i] = 0;
	  }
  }
  REP(i, N)Set(i, d[i]);
}
#include "Brunolib.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define REP(i, n) for(int i = 0;i < n;i ++)

long long Bruno( int N, int A[] ){
  ll n = N;
  ll tt = 0, t = 1;
  REP(i, n)if(A[i])tt += t * A[i + 1], t *= 2, i ++;
  if(tt & (1LL<<60))tt ^= ((1LL<<61) - 1);
  return tt;
}
#Verdict Execution timeMemoryGrader output
Fetching results...