Submission #788041

#TimeUsernameProblemLanguageResultExecution timeMemory
788041andrei_boacaPrisoner Challenge (IOI22_prison)C++17
65 / 100
15 ms1088 KiB
#include <bits/stdc++.h>
#include "prison.h"
//#include "grader.cpp"
using namespace std;

int getbit(int x,int bit)
{
    while(bit>0)
    {
        bit--;
        x/=3;
    }
    return x%3;
}
std::vector<std::vector<int>> devise_strategy(int N)
{
    int n=N;
    vector<vector<int>> sol;
    for(int board=0;board<=24;board++)
    {
        vector<int> v;
        if(board==0)
        {
            v.push_back(0);
            int bit=7;
            for(int i=1;i<=n;i++)
            {
                int x=getbit(i,bit);
                v.push_back(bit*3+x+1);
            }
            sol.push_back(v);
            continue;
        }
        int bit=(board-1)/3;
        int val=(board-1)%3;
        if(bit%2==1)
        {
            v.push_back(1);
            for(int i=1;i<=n;i++)
            {
                int x=getbit(i,bit);
                if(x<val)
                    v.push_back(-2);
                if(x>val)
                    v.push_back(-1);
                if(x==val)
                    v.push_back((bit-1)*3+getbit(i,bit-1)+1);
            }
            sol.push_back(v);
            continue;
        }
        else
        {
            v.push_back(0);
            for(int i=1;i<=n;i++)
            {
                int x=getbit(i,bit);
                if(x<val)
                    v.push_back(-1);
                if(x>val)
                    v.push_back(-2);
                if(x==val)
                    v.push_back((bit-1)*3+getbit(i,bit-1)+1);
            }
            sol.push_back(v);
            continue;
        }
    }
    return sol;
}


#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...