Submission #1335709

#TimeUsernameProblemLanguageResultExecution timeMemory
1335709itslqArranging Shoes (IOI19_shoes)C++20
10 / 100
22 ms5820 KiB
#include "shoes.h"
#include "bits/stdc++.h"
using namespace std;

#define int long long

const int MAX = 1e5;
vector<int> fenwick(MAX + 10);

void update(int n) {
    for (; n <= MAX; n += n & -n) fenwick[n]++;
}

int query(int n) {
    int S = 0;
    for (; n > 0; n -= n & -n) S += fenwick[n];
    return S;
}

int count_swaps(vector<signed> S) {
    const int N = S.size();

    map<int, int> cnt;
    map<int, vector<pair<int, int> > > pos;
    vector<int> A(N), B;

    for (int i = 0; i < N; i++) {
        A[i] = abs(S[i]) + 2 * N * cnt[S[i]]++ + (int) (S[i] > 0);
    }

    int ans = 0;
    B = A;
    sort(B.begin(), B.end());
    B.erase(unique(B.begin(), B.end()), B.end());

    for (int i = 0; i < N; i++) {
        A[i] = lower_bound(B.begin(), B.end(), A[i]) - B.begin();
        ans += query(N - A[i]);
        update(N - A[i]);
    }
    
    return ans;
}
#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...