Submission #858705

#TimeUsernameProblemLanguageResultExecution timeMemory
85870512345678Prisoner Challenge (IOI22_prison)C++17
0 / 100
3 ms1112 KiB
#include "prison.h"

#include <bits/stdc++.h>

using namespace std;

const int nx=6561, kx=24;
int p[11];
vector<vector<int>> ans(kx+1, vector<int> (nx+1));

std::vector<std::vector<int>> devise_strategy(int N) {
    for (int i=1; i<=nx; i++) ans[0][i]=(i-1)/2187+1;
    p[0]=1;
    for (int i=1; i<11; i++) p[i]=p[i-1]*3;
    for (int i=1; i<=kx; i++)
    {
        int col=(i-1)/3+1, pw=p[8-col], pv=(i-1)%3;
        bool isa=col%2;
        ans[i][0]=(int)isa;
        
        for (int j=1; j<=nx; j++)
        {
            int rem=((j-1)%p[8-col+1])/pw;
            if (rem!=pv)
            {
                if ((rem>pv&&isa)||(rem<pv&&!isa)) ans[i][j]=-1;
                if ((rem>pv&&!isa)||(rem<pv&&isa)) ans[i][j]=-2;
            }
            else
            {
                if (3*col==kx) continue;
                int np=p[8-col-1], nw=(j-1)%p[8-col];
                ans[i][j]=nw/np+1+3*col, kx;
            }
        }
    }
    vector<vector<int>> ans2(23, vector<int> (N+1));
    for (int i=0; i<=22; i++) 
    {
        for (int j=0; j<=N; j++) 
        {
            if (ans[i][j]==22) ans2[i][j]=-1;
            else if (ans[i][j]==24) ans2[i][j]=-2;
            else if (ans[i][j]==23) ans2[i][j]=22;
            else if (i==22) ans2[i][j]=ans[i+1][j];
            else ans2[i][j]=ans[i][j];
        }
    }
    return ans2;
}

Compilation message (stderr)

prison.cpp: In function 'std::vector<std::vector<int> > devise_strategy(int)':
prison.cpp:33:44: warning: right operand of comma operator has no effect [-Wunused-value]
   33 |                 ans[i][j]=nw/np+1+3*col, kx;
      |                                            ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...