Submission #1188922

#TimeUsernameProblemLanguageResultExecution timeMemory
1188922dianaArt Collections (BOI22_art)C++20
35 / 100
95 ms428 KiB
#include "art.h"
#include <bits/stdc++.h>
#pragma GCC ooptimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
using namespace std;

int n;
vector<int> ans;

bool comp(int a, int b)
{
    vector<int> v1 = {a, b}, v2 = {b, a};
    for(int i=1; i<=n; i++)
    {
        if(i == a || i == b)
            continue;
        v1.push_back(i);
        v2.push_back(i);
    }

    return publish(v1) < publish(v2);
}

void srt(int l, int r)
{
    if(l == r)
        return;

    int m = (l+r)/2;
    srt(l, m);
    srt(m+1, r);

    int i = l, j = m+1;
    vector<int> jaun;
    while(i<=m && j<=r)
    {
        if(comp(ans[i], ans[j]))
            jaun.push_back(ans[i++]);
        else
            jaun.push_back(ans[j++]);
    }
    while(i<=m)
        jaun.push_back(ans[i++]);
    while(j<=r)
        jaun.push_back(ans[j++]);

    for(int k=0; k<r-l+1; k++)
        ans[l+k] = jaun[k];
}

void solve(int N)
{
    n = N;
    for(int i=1; i<=N; i++)
        ans.push_back(i);

    srt(0, N-1);
    answer(ans);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...