Submission #1188730

#TimeUsernameProblemLanguageResultExecution timeMemory
1188730Valters07Art Collections (BOI22_art)C++20
100 / 100
789 ms472 KiB
#include <bits/stdc++.h>
#include "art.h"
using namespace std;
void solve(int n)
{
    vector<int> vals(n);
    iota(vals.begin(), vals.end(), 1);
    int inv = publish(vals);
    for(int i = 1;i < n;i++)
    {
        vector<int> tmp = vals;
        for(int j = i - 1;j >= 0;j--)
            swap(tmp[j], tmp[j + 1]);
        int inv_ = publish(tmp);         // a_i a_1 a_2 ... a_(i-1) a_(i+1) ... a_n
        int b = (inv_ - inv + i) / 2;    // n.o. elements less than a[i]
        int a = i - b;                   // n.o. elements greater than a[i]
        for(int j = 1;j <= b;j++)
            swap(tmp[j - 1], tmp[j]);
        swap(vals, tmp);                 // faster than vals = tmp
        inv -= a;
    }
    answer(vals);
}
#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...