Submission #1115107

#TimeUsernameProblemLanguageResultExecution timeMemory
1115107_callmelucianArt Collections (BOI22_art)C++17
50 / 100
661 ms1544 KiB
#include <bits/stdc++.h>
#include "art.h"
using namespace std;

typedef long long ll;
typedef long double ld;
typedef pair<ll,ll> pl;
typedef pair<int,int> pii;
typedef tuple<int,int,int> tpl;

#define all(a) a.begin(), a.end()
#define filter(a) a.erase(unique(all(a)), a.end())

int curInversion;

void mixSorted (vector<int> &vec, int l, int r, int sep) {
    // mix sorted segment [l; sep) and [sep; r]
    while (sep - l > 0 && r - sep + 1 > 0) {
        swap(vec[l], vec[sep]);
        int inversions = publish(vec);

        if (curInversion > inversions) {
            int u = vec[sep]; vec.erase(vec.begin() + sep);
            vec.insert(vec.begin() + l + 1, u);
            l++, sep++, curInversion -= sep - l;
        }
        else swap(vec[l], vec[sep]), l++;
    }
}

void mergeSort (vector<int> &vec, int l, int r) {
    if (l >= r) return;
    int mid = (l + r) >> 1;
    mergeSort(vec, l, mid), mergeSort(vec, mid + 1, r);
    mixSorted(vec, l, r, mid + 1);
}

void solve (int n) {
    vector<int> vec(n);
    for (int i = 1; i <= n; i++) vec[i - 1] = i;
    curInversion = publish(vec);

    mergeSort(vec, 0, n - 1);
    answer(vec);
}

#ifdef LOCAL
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);

    solve(7);

    return 0;
}
#endif // LOCAL

Compilation message (stderr)

interface.cpp: In function 'int publish(std::vector<int>)':
interface.cpp:20:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   20 |     if(v.size() != N) {
      |        ~~~~~~~~~^~~~
interface.cpp: In function 'void answer(std::vector<int>)':
interface.cpp:36:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   36 |     if(v.size() != N) {
      |        ~~~~~~~~~^~~~
#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...