Submission #765819

#TimeUsernameProblemLanguageResultExecution timeMemory
765819KhizriPrisoner Challenge (IOI22_prison)C++17
48.50 / 100
31 ms1372 KiB
#include "prison.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define F first
#define S second
#define INF 1e18
#define all(v) (v).begin(),(v).end()
#define rall(v) (v).rbegin(),(v).rend()
#define pii pair<int,int>
#define pll pair<ll,ll>
#define OK cout<<"Ok"<<endl;
#define MOD (ll)(1e9+7)
const int mxn=5e3+5;
int digit(int k,int idx){
    vector<int>vt;
    while(k>0){
        vt.pb(k%3);
        k/=3;
    }
    while(vt.size()<8){
        vt.pb(0);
    }
    return vt[7-idx];
}
vector<vector<int>> devise_strategy(int n) {
    vector<vector<int>>ans;
    for(int id=0;id<32;id++){
        if(id%4==0){
            vector<int>vt;
            vt.pb(1);
            for(int i=1;i<=n;i++){
                int q=digit(i,id/4);
                if(q==0){
                    vt.pb(id+1);
                }
                else if(q==1){
                    vt.pb(id+2);
                }
                else{
                    vt.pb(id+3);
                }
            }
            ans.pb(vt);
        }
        else{
            vector<int>vt;
            vt.pb(0);
            int nxt=(id/4+1)*4;
            int k=id%4-1;
            for(int i=1;i<=n;i++){
                int q=digit(i,id/4);
                if(q<k){
                    vt.pb(-1);
                }
                else if(q>k){
                    vt.pb(-2);
                }
                else{
                    if(id<28){
                        vt.pb(nxt);
                    }
                    else{
                        vt.pb(0);
                    }
                }
            }
            ans.pb(vt);
        }
    }
    /*
    for(int i=0;i<ans.size();i++){
        for(int v:ans[i]){
            cout<<v<<' ';
        }
        cout<<endl;
    }
    */
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...