Submission #151433

#TimeUsernameProblemLanguageResultExecution timeMemory
151433scott_wuOn the Grid (FXCUP4_grid)C++17
100 / 100
21 ms376 KiB
#include "grid.h"
#include <bits/stdc++.h>

using namespace std;
const int MAXN = 1100;

int N;
vector <int> cv;
vector <int> nv;
int ans[MAXN];

void cyc (int K)
{
    nv.clear();

    for (int i = 0; i < K; i++)
        nv.push_back(cv[(i+K-1)%K]);
    for (int i = K; i < N; i++)
        nv.push_back(cv[i]);
}

vector<int> SortDisks(int __N) {
    N = __N;
    for (int i = 0; i < N; i++)
        cv.push_back(i);

    int nhas = N;
    int cval = PutDisks (cv);
    while (nhas)
    {
        cyc (nhas);
        int nval = PutDisks (nv);

        cv = nv;
        if (cval <= nval)
        {
            ans[cv[0]] = nval - N;
            nhas--;
            for (int i = 0; i < N - 1; i++)
            {
                if (i >= nhas && ans[cv[i]] <= ans[cv[i+1]])
                    break;
                swap (cv[i], cv[i+1]);
            }
            //if (cval == nval - nhas)
            //    cval = PutDisks (cv);
        }
        else
            cval = nval;
    }
    /*int r = (N * (N - 1)) / 2;
    for (int i = 1; i < N; i++)
        r -= ans[cv[i]];
    ans[cv[0]] = r;*/


    vector <int> res;
    for (int i = 0; i < N; i++)
        res.push_back(ans[i] + 1);
    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...