#include "prison.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct pos {
    int logec,etat;
    void afficher(){
        cout<<"log "<<logec<<" etat "<<etat<<endl;
    }
};
const int LOGMAXI=8;
vector<vector<int>> strategie;
vector<int> binaire;
pos nb_vers_pos(int n){
    pos a;
    a.etat=n%3;
    a.logec=n/3;
    return a;
}
int pos_vers_nb(pos n){
    int a;
    a=n.etat;
    a+=n.logec*3;
    return a;
}
void decomp(int n){
    binaire.clear();
    while (n!=0){
        binaire.push_back(n%3);
        n/=3;
    }
    while (binaire.size()!=LOGMAXI){
        binaire.push_back(0);
    }
    reverse(binaire.begin(),binaire.end());
}
vector<vector<int>> devise_strategy(int N) {
    int nbpos=24;
    for (int i=0;i<=nbpos;i++){
        vector<int> ajout={};
        pos act=nb_vers_pos(i);
        if (act.etat==0 and act.logec==0){
            ajout.push_back(0);
        }
        else {
            if (act.logec%2==0){
                ajout.push_back(1);
            }
            else {
                ajout.push_back(0);
            }
        }
        for (int j=1;j<=N;j++){
            decomp(j);
            if (act.etat==0 and act.logec==0){
                ajout.push_back(pos_vers_nb({0,binaire[0]}));
            }
            else if (act.etat==binaire[act.logec]){
                if (act.logec==LOGMAXI-1){
                    ajout.push_back(0);
                }
                else {
                    ajout.push_back(pos_vers_nb({act.logec+1,binaire[act.logec+1]}));
                }
            }
            else {
                if (act.etat<binaire[act.logec]){
                    if (act.logec%2==0){
                        ajout.push_back(-1);
                    }
                    else {
                        ajout.push_back(-2);
                    }
                }
                else {
                    if (act.logec%2==0){
                        ajout.push_back(-2);
                    }
                    else {
                        ajout.push_back(-1);
                    }
                }
            }
        }
        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(21).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... |