Submission #1011684

#TimeUsernameProblemLanguageResultExecution timeMemory
1011684u_suck_oArranging Shoes (IOI19_shoes)C++17
50 / 100
1080 ms3536 KiB
#include "bits/stdc++.h"
#include "shoes.h"

using namespace std;

long long count_swaps(vector<int> s) {
    long long ans = 0;
    long long n = s.size()/2;
    long long minloc[n+1][2];
    for (int p = 0; p < n; p++) {
        memset(minloc, 0x3f, sizeof minloc);
        for (long long i = 0; i < s.size(); i++) {
            if (s[i] < 0)
                minloc[-s[i]][0] = min(minloc[-s[i]][0], i);
            else
                minloc[s[i]][1] = min(minloc[s[i]][1], i);
        }
        long long mind = LONG_LONG_MAX, mini = -1;
        for (int i = 1; i <= n; i++) {
            long long d = minloc[i][0] + minloc[i][1] - 1;
            if (minloc[i][0] > minloc[i][1]) d += 1;
            if (d < mind) {
                mind = d;
                mini = i;
            }
        }
        ans += mind;
        s.erase(s.begin() + max(minloc[mini][0], minloc[mini][1]));
        s.erase(s.begin() + min(minloc[mini][0], minloc[mini][1]));
    }
    return ans;
}

Compilation message (stderr)

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:12:33: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   12 |         for (long long i = 0; i < s.size(); i++) {
      |                               ~~^~~~~~~~~~
#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...