제출 #411801

#제출 시각아이디문제언어결과실행 시간메모리
411801timmyfengArranging Shoes (IOI19_shoes)C++17
100 / 100
640 ms34528 KiB
#include <bits/stdc++.h>
using namespace std;
 
#include <bits/extc++.h>
 
template <class T, class Comp = less<T>>
using ordered_set = __gnu_pbds::tree<
    T, __gnu_pbds::null_type, Comp,
    __gnu_pbds::rb_tree_tag,
    __gnu_pbds::tree_order_statistics_node_update
>;
 
long long count_swaps(vector<int> s) {
    int n = s.size() / 2;
 
    map<int, vector<int>> nxt;
    ordered_set<int> shoes;
 
    for (int i = 2 * n - 1; i >= 0; --i) {
        nxt[s[i]].push_back(i);
        shoes.insert(i);
    }
 
    long long ans = 0;
    while (!shoes.empty()) {
        auto i = *shoes.begin();
        shoes.erase(shoes.begin());
 
        int x = s[i];
        nxt[x].pop_back();
 
        int j = nxt[-x].back();
        nxt[-x].pop_back();
 
        ans += shoes.order_of_key(j) + (x > 0);
        shoes.erase(j);
    }
 
    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...