#include "prison.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct Pos {
    int logec,etat;
    void afficher(){
        cout<<logec<<" "<<etat<<endl;
    }
};
const int OUI=1,NON=2,PAS_ENCORE=0,LOGMAXI=13;
vector<vector<int>> strategie;
Pos nb_vers_pos(int n){
    Pos a;
    a.etat=n%3;
    a.logec=LOGMAXI-1-n/3;
    return a;
}
int pos_vers_nb(Pos p){
    int a=0;
    a+=p.etat;
    a+=(LOGMAXI-1-p.logec)*3;
    return a;
}
vector<int> decomp(int n){
    vector<int> a={};
    while (n!=0){
        a.push_back(n%2);
        n/=2;
    }
    while (a.size()<LOGMAXI){
        a.push_back(0);
    }
    return a;
}
vector<vector<int>> devise_strategy(int N) {
    int nbpos=38;
    strategie.clear();
    for (int i=0;i<=nbpos;i++){
        vector<int> ajout={};
        Pos nb=nb_vers_pos(i);
        if (nb.etat==PAS_ENCORE){
            ajout.push_back(0);
        }
        else {
            ajout.push_back(1);
        }
        for (int j=1;j<=N;j++){
            vector<int> binaire=decomp(j);
            if (nb.etat==PAS_ENCORE){
                Pos nouv;
                if (binaire[nb.logec]==0){
                    nouv.etat=NON;
                }
                else {
                    nouv.etat=OUI;
                }
                nouv.logec=nb.logec;
                ajout.push_back(pos_vers_nb(nouv));
            }
            else {
                if (nb.etat==OUI){
                    if (binaire[nb.logec]==0){
                        ajout.push_back(-2);
                    }
                    else {
                        if (nb.logec==0){
                            ajout.push_back(0);
                        }
                        else {
                            ajout.push_back(pos_vers_nb({nb.logec-1,PAS_ENCORE}));
                        }
                    }
                }
                else {
                    if (binaire[nb.logec]==1){
                        ajout.push_back(-1);
                    }
                    else {
                        if (nb.logec==0){
                            ajout.push_back(0);
                        }
                        else {
                            ajout.push_back(pos_vers_nb({nb.logec-1,PAS_ENCORE}));
                        }
                    }
                }
            }
        }
        strategie.push_back(ajout);
    }
    /*for (int i=0;i<=nbpos;i++){
        for (int j=0;j<=N;j++){
            cout<<strategie[i][j]<<" ";
        }
        cout<<endl;
    }
    nb_vers_pos(37).afficher();*/
    return strategie;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |