Submission #299473

# Submission time Handle Problem Language Result Execution time Memory
299473 2020-09-15T02:19:58 Z Hideo Sorting (IOI15_sorting) C++17
Compilation error
0 ms 0 KB
//#include "sorting.h"
#include "grader.cpp"
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define all(s) s.begin(), s.end()
#define pb push_back
#define fr first
#define sc second
#define vi vector < int >
#define pi pair < int, int >

const int MN = 3e5 + 7;

vector < pi > sw, out;
int a[MN], b[MN], r[MN];
int x[MN], y[MN];
int n, m;

bool check (int k){
    for (int i = 0; i < n; i++)
        a[i] = b[i];
    for (int i = 0; i < k; i++)
        swap(a[x[i]], a[y[i]]);
    for (int i = 0; i < n; i++)
        r[a[i]] = i;
    vector < pi > kek;
    for (int i = 0; i < n; i++){
        int it = i;
        while (it != a[it]){
            int x = it, y = a[it];
            it = a[it];
            kek.pb({x, y});
            swap(a[r[x]], a[r[y]]);
            swap(r[x], r[y]);
        }
    }
    if (kek.size() <= k)
        sw = kek;
    return kek.size() <= k;
}

void simulate (int k){
    while (sw.size() != k)
        sw.pb({0, 0});
    for (int i = 0; i < n; i++){
        a[i] = b[i];
        r[a[i]] = i;
    }
    for (int i = 0; i < k; i++){
        swap(a[x[i]], a[y[i]]);
        swap(r[a[x[i]]], r[a[y[i]]]);
        int v = r[sw[i].fr], u = r[sw[i].sc];
        out.pb({v, u});
        swap(a[v], a[u]);
        swap(r[a[v]], r[a[u]]);
    }
}

int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]) {
    n = N; m = M;
    bool sorted = true;
    for (int i = 0; i < n; i++){
        b[i] = S[i];
        if (b[i] != i)
            sorted = false;
    }
    if (sorted)
        return 0;
    for (int i = 0; i < m; i++){
        x[i] = X[i];
        y[i] = Y[i];
    }
    int lf = 0, rg = M + 1;
    while (lf + 1 < rg){
        int mid = (lf + rg) >> 1;
        if (check(mid))
            rg = mid;
        else
            lf = mid;
    }
    simulate(rg);
    for (int i = 0; i < out.size(); i++){
        P[i] = out[i].fr;
        Q[i] = out[i].sc;
    }
    return rg;
}

Compilation message

sorting.cpp:2:10: fatal error: grader.cpp: No such file or directory
    2 | #include "grader.cpp"
      |          ^~~~~~~~~~~~
compilation terminated.