Submission #1336612

#TimeUsernameProblemLanguageResultExecution timeMemory
1336612trandaihao5555Broken Device (JOI17_broken_device)C++20
100 / 100
23 ms1528 KiB
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;

void Anna( int N, long long X, int K, int P[] ){
    vector<bool> ch(N,true);
    for (int i=0;i<K;i++) {
        ch[P[i]] = false;
    }
    vector<int> p(N);
    iota(p.begin(),p.end(),0);
    mt19937 rd(0);
    shuffle(p.begin(),p.end(),rd);
    vector<bool> res(N,0);
    for (int i=0;i<N && X;i+=2) {
        if (!ch[p[i]] && !ch[p[i+1]]) continue;
        if (X % 3 == 1) {
            if (ch[p[i + 1]]) {
                res[p[i + 1]] = true;
                X /= 3;
            }
        }
        else if (X % 3 == 2) {
            if (ch[p[i+1]] && ch[p[i]]) {
                res[p[i]] = res[p[i+1]] = true;
                X /= 3;
            }
        }
        else {
            if (ch[p[i]]) {
                res[p[i]] = true;
                X /= 3;
            }
        }
    }
    for (int i=0;i<N;i++) Set(i,res[i]);
}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;

long long Bruno( int N, int A[] ){
    vector<int> p(N);
    iota(p.begin(),p.end(),0);
    mt19937 rd(0);
    shuffle(p.begin(),p.end(),rd);
    long long X = 0;
    for (int i=N-2;i>=0;i-=2) {
        if (!A[p[i]] && !A[p[i+1]]) continue;
        X *= 3;
        if (A[p[i+1]]) {
            X++;
            if (A[p[i]]) X++;
        }
    }
    return X;
//  return 0LL;
}
#Verdict Execution timeMemoryGrader output
Fetching results...