Submission #465371

#TimeUsernameProblemLanguageResultExecution timeMemory
465371aris12345678Arranging Shoes (IOI19_shoes)C++14
0 / 100
0 ms204 KiB
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
#define X first
#define Y second

const int mxN = 100005;

bool check(vector<pii> s) {
    int n = int(s.size());
    for(int i = 1; i < n; i+=2) {
        if(s[i].X != -s[i-1].X)
            return false;
    }
    return true;
}

ll count_swaps(vector<int> s) {
    int n = int(s.size());
    if(n <= 16) {
        vector<pii> shoes;
        for(int i = 0; i < n; i++)
            shoes.push_back({s[i], i});
        sort(shoes.begin(), shoes.end());
        ll ans = LLONG_MAX;
        do {
            ll res = 0;
            if(!check(shoes)) continue;
            for(int i = 0; i < n; i++)
                res += abs(shoes[i].Y-i-1);
            ans = min(ans, res);
        } while(next_permutation(shoes.begin(), shoes.end()));
        return ans;
    } else {
        n /= 2;
        n--;
        return 1LL*n*(n+1)/2;
    }
    assert(true);
}
#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...