제출 #1078410

#제출 시각아이디문제언어결과실행 시간메모리
1078410oscar1fBroken Device (JOI17_broken_device)C++17
41 / 100
27 ms2900 KiB
#include<bits/stdc++.h>
#include "Annalib.h"
using namespace std;
using ll=long long;

static const int TAILLE_MAX=150+5;
static bool estCache[TAILLE_MAX];

void Anna(int N,ll X,int K,int P[]) {
    ll nbVal=N;
    ll obj=X;
    ll nbCache=K;
    for (ll i=0;i<nbVal;i++) {
        estCache[i]=false;
    }
    for (ll i=0;i<nbCache;i++) {
        estCache[P[i]]=true;
    }
    vector<ll> listeBit;
    while (obj>0) {
        listeBit.push_back(obj%2);
        obj/=2;
    }
    /*for (int i:listeBit) {
        cout<<i;
    }
    cout<<endl;*/
    ll pos=0;
    while (pos<nbVal) {
        if (!listeBit.empty() and !estCache[pos] and pos<nbVal-1 and (!estCache[pos+1] or listeBit.back()==0)) {
            Set(pos,1);
            Set(pos+1,listeBit.back());
            //cout<<1<<listeBit.back();
            listeBit.pop_back();
            pos+=2;
        }
        else {
            Set(pos,0);
            //cout<<0;
            pos++;
        }
    }
    //cout<<endl;
}
#include<bits/stdc++.h>
#include "Brunolib.h"
using namespace std;
using ll=long long;

ll Bruno(int N,int A[]) {
    ll nbVal=N,pos=0,rep=0;
    while (pos<nbVal) {
        if (A[pos]==1) {
            rep*=2;
            rep+=A[pos+1];
            pos+=2;
        }
        else {
            pos++;
        }
    }
    //cout<<"!"<<rep<<endl;
    return rep;
}
#Verdict Execution timeMemoryGrader output
Fetching results...