Submission #184008

#TimeUsernameProblemLanguageResultExecution timeMemory
184008Ruxandra985Arranging Shoes (IOI19_shoes)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#include "shoes.h"
#define DIMN 100010
using namespace std;
int aib[DIMN] , f[DIMN];
deque <int> poz[DIMN];
map <int,int> code;
void update (int i , int n , int x){

    for (;i<=n;i = i + (i & (-i)))
        aib[i]+=x;

}
int query (int i){
    int sol = 0;

    for (;i;i = i - (i & (-i)))
        sol+=aib[i];
    return sol;

}
long long count_swaps (int v[]){
    int n , i , p1 , p2;
    long long sol=0;
    n = 0;
    while (v[n])
        n++;
    n = n/2;
    for (i=0;i<2*n;i++){
        if (!code[max(v[i] , -v[i])])
            code[max(v[i] , -v[i])] = i + 1;
    }

    for (i=0;i<2*n;i++){
        poz[code[max(v[i] , -v[i])]].push_back(i); /// a doua pozitie
    }

    for (i=0;i<2*n;i++){
        if (!f[i]){ /// nu ai mai intalnit
            p1 = i + query(i + 1);
            p2 = poz[code[max(v[i] , -v[i])]].front();
            poz[code[max(v[i] , -v[i])]].pop_front();
            while (p2 <= i){
                p2 = poz[code[max(v[i] , -v[i])]].front();
                poz[code[max(v[i] , -v[i])]].pop_front();
            }
            f[p2] = 1;
            p2 += query(p2 + 1);
            sol = sol + (p2 - p1 - 1);
            if (v[i] > 0)
                sol++; /// mai faci un swap
            update (i + 1, 2*n , 1);
            update (poz[code[max(v[i] , -v[i])]].front()+1 , 2*n , -1);
        }
    }
    return sol;

}

Compilation message (stderr)

/tmp/cciZE9Cv.o: In function `main':
grader.cpp:(.text.startup+0x272): undefined reference to `count_swaps(std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status