제출 #858708

#제출 시각아이디문제언어결과실행 시간메모리
858708hew죄수들의 도전 (IOI22_prison)C++17
30 / 100
22 ms2428 KiB
#include "prison.h"
#include<bits/stdc++.h>
#include <vector>
using namespace std;

std::vector<std::vector<int>> devise_strategy(int N) {
    vector<vector<int>> ans(60,vector<int>(N+1));
    int i,j;
    ans[0][0]=0;
    for(i=1;i<=N;i++){
        ans[0][i]=40+i/1000;
    }

    //1 2 3
    for(i=1;i<=4;i++) ans[i][0]=0;
    for(i=1;i<=N;i++){
        ans[3][i]=30+(i/100)%10;
        ans[2][i]=20+(i/10)%10;
        ans[1][i]=10+i%10;
    }
    //

    for(i=10;i<50;i++) ans[i][0]=1;

    // 40-49
    for(i=0;i<10;i++){
        // j/1000
        for(j=1;j<=N;j++){
            if(j/1000==i){
                ans[40+i][j]=3; ////////////////////////////////
            }else if(j/1000>i){
                ans[40+i][j]=-1;
            }else{
                ans[40+i][j]=-2;
            }
        }
    }

    // 30-39
    for(i=0;i<10;i++){
        // j/1000
        for(j=1;j<=N;j++){
            if((j/100)%10==i){
                ans[30+i][j]=2; ////////////////////////////////
            }else if((j/100)%10>i){
                ans[30+i][j]=-1;
            }else{
                ans[30+i][j]=-2;
            }
        }
    }

    // 20-29
    for(i=0;i<10;i++){
        // j/10
        for(j=1;j<=N;j++){
            if((j/10)%10==i){
                ans[20+i][j]=1; ////////////////////////////////
            }else if((j/10)%10>i){
                ans[20+i][j]=-1;
            }else{
                ans[20+i][j]=-2;
            }
        }
    }

    // 10-19
    for(i=0;i<10;i++){
        // j%10
        for(j=1;j<=N;j++){
            if(j%10>i){
                ans[10+i][j]=-1;
            }else{
                ans[10+i][j]=-2;
            }
        }
    }

    //return {std::vector<int>(N + 1, 0)};
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...