Submission #1281949

#TimeUsernameProblemLanguageResultExecution timeMemory
1281949xorreverseArranging Shoes (IOI19_shoes)C++20
10 / 100
1096 ms4124 KiB
#include<bits/stdc++.h>
#include "shoes.h"
using namespace std;

long long count_swaps(vector<int> s){
    int n = s.size();
    vector<pair<int, int>> left_shoose;
    vector<pair<int, int>> right_shoose;
    for (int i = 0; i < n; i ++){
        if (s[i] < 0) left_shoose.push_back({-s[i], i});
        else right_shoose.push_back({s[i], i});
    }
    long long res = 0;
    for (int i = 0; i < n / 2; i ++){
        pair<int, int> left_val = left_shoose[0];
        res += left_val.second - 2 * i;
        for (int j = 0; j < right_shoose.size(); j ++){
            if (right_shoose[j].second < left_val.second){
                right_shoose[j].second ++;
            }
            else break;
        }
        left_shoose.erase(left_shoose.begin());

        //cout << "wat the sigma " << res << " " << left_val.second << " " << 2 * i << " " << right_shoose[0].second<< endl;
        pair<int, int> right_val;
        int sigma = 0;
        for (int j = 0; j < right_shoose.size(); j ++){
            if (right_shoose[j].first == left_val.first){
                right_val = right_shoose[j];
                sigma = j;
                break;
            }
            else right_shoose[j].second ++;
        }
        res += right_val.second - (2 * i + 1);
        for (int j = 0; j < left_shoose.size(); j ++){
            if (left_shoose[j].second < right_val.second){
                left_shoose[j].second ++;
            }
            else break;
        }
        right_shoose.erase(right_shoose.begin() + sigma);
        //cout << "mao fuq " << res << endl;
    }
    return res;
}
#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...