Submission #1140150

#TimeUsernameProblemLanguageResultExecution timeMemory
1140150grizoArranging Shoes (IOI19_shoes)C++20
10 / 100
0 ms328 KiB
#include <bits/stdc++.h>
#include "shoes.h"

using namespace std;
using ll = long long;
#define debug(v)                                                                 \
    cerr << "Line(" << __LINE__ << ") -> " << #v << " = " ; 
#define dbx(x) debug(x); cerr << x << "\n";
#define dbg(x) debug(x); cerr << "{ "; for(auto &e : x) cerr << e << ", "; cerr << "} \n";
#define log(x) (31^__builtin_clz(x))

const int N = 1e6+10, MOD = 1e9+7;

ll count_swaps(vector<int> S){

    int n = (int)S.size();
    vector<int> a = S;

    set<pair<int,int>> l, r, all;
    for(int i = 0 ; i < n ; i ++){
        if(a[i] < 0)l.insert({a[i], i});
        else r.insert({a[i], i});
    }

    ll ans = 0;
    for(int i = 0 ; i < n ; i ++){
        if(all.find(make_pair(a[i], i)) != all.end())continue;

        if(a[i] < 0){
            auto it = r.lower_bound(make_pair(-a[i], 0));
            ans += it->second - i - 1;

            all.insert({a[i], i});
            all.insert({-a[i], it->second});

            l.erase(make_pair(a[i], i));
            r.erase(it);
        }else {
            auto it = l.lower_bound(make_pair(-a[i], 0));
            ans += it->second - i;

            all.insert({a[i], i});
            all.insert({-a[i], it->second});

            l.erase(it);
            r.erase(make_pair(a[i], 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...