제출 #1204688

#제출 시각아이디문제언어결과실행 시간메모리
1204688tapilyocaArranging Shoes (IOI19_shoes)C++20
10 / 100
1096 ms14404 KiB
#include "shoes.h" #include<bits/stdc++.h> using namespace std; template<typename T> using vec = vector<T>; using ll = long long; using vll = vec<ll>; using pll = pair<ll,ll>; #define pb push_back long long count_swaps(std::vector<int> s) { ll n = s.size()>>1; ll out = 0; vll oop1, oop2; for(ll i = 0; i < n; i++) { map<ll,ll> dists; for(ll j = 2*i; j < 2 * n; j++) { if(s[j] > 0) { if(not dists[s[j]]) dists[s[j]] = (j - (2*i)); else dists[s[j]] = min(dists[s[j]], j-(2*i)); } else { if(not dists[s[j]]) dists[s[j]] = abs(j - (2*i)) - 1; else dists[s[j]] = min(dists[s[j]], abs(j-(2*i))-1); } } ll minshoe = -1; ll mn = 1e18; for(auto itr = dists.begin(); itr != dists.end(); itr++) { ll shoe = abs(itr->first); ll netDist = dists[shoe] + dists[-shoe]; if(netDist < mn) { mn = netDist; minshoe = shoe; } } for(ll j = 2*i; j < 2*n; j++) { if(s[j] == -minshoe) { for(ll k = j; k > 2*i; k--) { swap(s[k], s[k-1]); out++; } break; } } for(ll j = 2*i; j < 2*n; j++) { if(s[j] == minshoe) { for(ll k = j; k > 2*i+1; k--) { swap(s[k], s[k-1]); out++; } break; } } } // cerr << "Final array: "; // for(int &x : s) cerr << x << " "; // cerr << endl; return out; }
#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...