Submission #1320878

#TimeUsernameProblemLanguageResultExecution timeMemory
1320878d_kPrisoner Challenge (IOI22_prison)C++20
10 / 100
2 ms1592 KiB
#include "prison.h"

#include <vector>
#include <bits/stdc++.h>
using namespace std;

vector<vector<int>> devise_strategy(int n) {
    int s = (int)sqrt(n) + 1;
    int x = 3 * s;
    vector<vector<int>> ans(x + 1, vector<int>(n + 1, 0));


    ans[0][0] = 0;
    for (int a = 1; a <= n; a++) ans[0][a] = (int)sqrt(a);

    for (int k = 1; k < s; k++) {
        ans[k][0] = 1;
        for (int b = 1; b <= n; b++) {
            int kb = (int)sqrt(b);
            if (kb == k) ans[k][b] = s;          
            else ans[k][b] = (k < kb) ? -1 : -2;
        }
    }

    ans[s][0] = 0; 
    for (int a = 1; a <= n; a++) {
        int k = (int)sqrt(a);
        int sq = k * k;
        int r = a - sq;
        ans[s][a] = s + 1 + r;
    }

    for (int st = s + 1; st <= x; st++) {
        ans[st][0] = 1;
        int ra = st - s - 1;
        for (int b = 1; b <= n; b++) {
            int k = (int)sqrt(b);
            int sq = k * k;
            int rb = b - sq;
            ans[st][b] = (rb < ra) ? -2 : -1; 
        }
    }

    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...