Submission #493602

#TimeUsernameProblemLanguageResultExecution timeMemory
493602protonArranging Shoes (IOI19_shoes)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

long long merge(int a[], int beg, int mid, int end)
{
    int i = beg, j = mid;
    long long inv = 0;
    while(i < mid and j < end)
        if(a[i] < a[j]) i++;
        else    inv += mid - i, j++;
    std::inplace_merge(a + beg, a + mid, a + end);
    return inv;
}

// sort arr[beg:end) and return no. of inversions
long long inversions(int a[], int beg, int end)
{
    long long inv = 0;
    if(end - beg < 2)   return 0;
    if(end - beg == 2)
    {
        if(a[beg] < a[beg + 1]) return 0;
        else    return swap(a[beg], a[beg + 1]), 1;
    }
    int mid = (beg + end) >> 1;
    inv += inversions(a, beg, mid);
    inv += inversions(a, mid, end);
    inv += merge(a, beg, mid, end);
    return inv;
}

int32_t main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n;  cin >> n;
    int a[n + n], p[n + n];
    for(int &x: a)  cin >> x;

    queue<int> idx[n + 1];
    for(int i = 0, c = 0; i < n + n; i++)
    {
        if(a[i] < 0)
        {
            p[i] = c;
            idx[-a[i]].push(c + 1);
            c += 2;
        }
    }
    for(int i = 0; i < n + n; i++) {
        if(a[i] > 0)
        {
            p[i] = idx[a[i]].front();
            idx[a[i]].pop();
        }
    }
    
    cout << inversions(p, 0, n + n);
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccxreCBR.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cccLiVsU.o:shoes.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccxreCBR.o: in function `main':
grader.cpp:(.text.startup+0x2a8): undefined reference to `count_swaps(std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status