제출 #1138946

#제출 시각아이디문제언어결과실행 시간메모리
1138946AliyyiakbarArranging Shoes (IOI19_shoes)C++20
100 / 100
445 ms242264 KiB
#include "shoes.h"
#include "bits/stdc++.h"
#include "ext/pb_ds/assoc_container.hpp"
#include "ext/pb_ds/tree_policy.hpp"
#include "ext/pb_ds/hash_policy.hpp"
using namespace std;
using namespace __gnu_pbds;

template <typename T>
using __indexed_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

long long count_swaps(vector<int> a)
{
    int n = a.size();
    __indexed_set< pair<int, int> > st;
    gp_hash_table<int, queue<int> > mp;
    for (int i = 0; i < n; ++i)
    {
        mp[a[i]].push(i);
        st.insert({i, a[i]});
    }
    long long result = 0;
    while(!st.empty())
    {
        int shoe = st.begin() -> second;
        int shoePair = mp[-shoe].front();
        result = result + 1LL * (st.order_of_key({shoePair, -shoe})) - (shoe < 0LL);
        mp[shoe].pop();
        mp[-shoe].pop();
        st.erase({shoePair, -shoe});
        st.erase(st.begin());
    }
    return result;
}
#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...