Submission #1064348

#TimeUsernameProblemLanguageResultExecution timeMemory
1064348UnforgettableplBroken Device (JOI17_broken_device)C++17
85 / 100
30 ms3008 KiB
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;

namespace {
vector<int> convert_to_base3(long long x) {
    vector<int> res;
    while(x) {
        res.emplace_back(x%3);
        x/=3;
    }
    return res;
}
}

void Anna(int N, long long X, int K, int P[]){
    vector<bool> bad(N+1);
    for(int i=0;i<K;i++)bad[P[i]]=true;
    vector<int> num = convert_to_base3(X);
    auto iter = num.begin();
    for(int i=0;i<N;i+=2) {
        if(bad[i] or bad[i+1] or iter==num.end()){Set(i,0);Set(i+1,0);continue;}
        if(*iter==0){
            Set(i,0);
            Set(i+1,1);
        } else if(*iter==1) {
            Set(i,1);
            Set(i+1,0);
        } else if(*iter==2) {
            Set(i,1);
            Set(i+1,1);
        }
        iter++;
    }
}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;

namespace {
long long convert_to_base2(vector<int> num) {
    long long X = 0;
    reverse(num.begin(),num.end());
    for(int&i:num) {
        X*=3;
        X+=i;
    }
    return X;
}
}

long long Bruno(int N, int A[]) {
    vector<int> num;
    for(int i=0;i<N;i+=2){
        if(A[i]==0 and A[i+1]==1)num.emplace_back(0);
        else if(A[i]==1 and A[i+1]==0)num.emplace_back(1);
        else if(A[i]==1 and A[i+1]==1)num.emplace_back(2);
    }
    return convert_to_base2(num);
}
#Verdict Execution timeMemoryGrader output
Fetching results...