Submission #243091

#TimeUsernameProblemLanguageResultExecution timeMemory
243091idtjArranging Shoes (IOI19_shoes)C++14
10 / 100
5 ms384 KiB
#include "shoes.h"

#include <deque>
#include <cmath>
using namespace std; 

long long count_swaps(vector<int> S) {
  	int n = S.size() / 2;
    vector<deque<pair<int, int>>> a(n + 1); // pos / is_left
    vector<pair<int, int>> in(n * 2); // size / is_left
 
    for (int i = 0; i < n * 2; ++i) {
        int now = S[i];
        if (now < 0) {
            in[i].second = 1;
            now = -now;
        }
        in[i].first = now;
    }
 
    long long ans = 0;
 
    for (int i = 0; i < n * 2; ++i) {
        auto &t = a[abs(in[i].first)];
        if (t.empty() || t.front().second == in[i].second) {
            t.push_back(make_pair(i, in[i].second));
        }
        else {
            if (t.front().second) {
                ans += i - t.front().first - 1;
            }
            else
                ans += i - t.front().first;
            t.pop_front();
        }
    }
 
	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...