제출 #149380

#제출 시각아이디문제언어결과실행 시간메모리
149380USA1 (#200)On the Grid (FXCUP4_grid)C++17
43 / 100
12 ms384 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 M, int K)
{
    nv.clear();
    for (int i = 0; i < M; i++)
        nv.push_back(cv[(i+K)%M]);
    for (int i = M; 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);

    for (int i = N; i >= 1; i--)
    {
        int cval = PutDisks (cv);
        for (int j = 7; j >= 0; j--)
        {
            if ((1 << j) >= i) continue;
            cyc (i, (1 << j));
            int nval = PutDisks (nv);
            if (nval == cval + (1 << j))
            {
                cv = nv;
                cval = nval;
            }
        }
        ans[cv[0]] = cval - N;
        swap (cv[0], cv[i-1]);
        for (int j = i - 1; j < N - 1; j++)
        {
            if (ans[cv[j]] > ans[cv[j+1]])
                swap (cv[j], cv[j+1]);
            else
                break;
        }
    }

    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...