Submission #1230122

#TimeUsernameProblemLanguageResultExecution timeMemory
1230122inesfiPrisoner Challenge (IOI22_prison)C++20
0 / 100
0 ms324 KiB
#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);
        ajout.push_back(act.logec%2);
        for (int j=1;j<=N;j++){
            decomp(j);
            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(-2);
                    }
                    else {
                        ajout.push_back(-1);
                    }
                }
                else {
                    if (act.logec%2==0){
                        ajout.push_back(-1);
                    }
                    else {
                        ajout.push_back(-2);
                    }
                }
            }
        }
        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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...