This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |