Submission #786936

#TimeUsernameProblemLanguageResultExecution timeMemory
786936andrei_boacaPrisoner Challenge (IOI22_prison)C++17
30 / 100
22 ms2152 KiB
#include <bits/stdc++.h>
#include "prison.h"
//#include "grader.cpp"
using namespace std;

std::vector<std::vector<int>> devise_strategy(int N)
{
    int n=N;
    vector<vector<int>> sol;
    for(int board=0;board<=55;board++)
    {
        vector<int> v;
        if(board==0)
        {
            v.push_back(0);
            int bit=13;
            int val=13*4;
            for(int i=1;i<=n;i++)
            {
                if((i>>(bit-1))&1)
                    v.push_back(val+1);
                else
                    v.push_back(val);
            }
            sol.push_back(v);
            continue;
        }
        int bit=0;
        for(int i=5;i>=2;i--)
        {
            int x=((board>>i)&1);
            bit=bit*2+x;
        }
        if(bit==0)
        {
            for(int i=1;i<=n+1;i++)
                v.push_back(0);
            sol.push_back(v);
            continue;
        }
        int who=((board>>1)&1);
        int bitval=(board&1);
        if(who==0)
        {
            v.push_back(1);
            for(int i=1;i<=n;i++)
            {
                int x=((i>>(bit-1))&1);
                if(x<bitval)
                {
                    v.push_back(-2);
                    continue;
                }
                if(x>bitval)
                {
                    v.push_back(-1);
                    continue;
                }
                int val=(bit*2+1)*2+x;
                v.push_back(val);
            }
            sol.push_back(v);
            continue;
        }
        v.push_back(0);
        bit--;
        for(int i=1;i<=n;i++)
        {
            int x=((i>>(bit-1))&1);
            int val=bit*4+x;
            v.push_back(val);
        }
        sol.push_back(v);
    }
    return sol;
}


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