Submission #1305543

#TimeUsernameProblemLanguageResultExecution timeMemory
1305543ayazArranging Shoes (IOI19_shoes)C++20
10 / 100
1 ms344 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; #define isz(x) (int)x.size() #define isz(x) (int)x.size() const int sz = 2e5 + 100; bool alone[sz]; long long count_swaps(std::vector<int> s) { int n = isz(s); if (n == 2) { return (s[0] > 0); } int res = 2e9; for (int mask = 0; mask < (1 << (n)); mask++) { vector<int> a = s; a.resize(n + 1); for (int i = 0; i < n; i++) { if (i > 0 && a[i - 1] + a[i] == 0) { alone[i] = false; continue; } if (i < n && a[i + 1] + a[i] == 0) { alone[i] = false; continue; } alone[i] = true; } int ans = 0; for (int i = 0; i < n; i++) { if (i > 0 && a[i - 1] + a[i] == 0) { alone[i] = false; continue; } if (i < n && a[i + 1] + a[i] == 0) { alone[i] = false; continue; } int d = 1e9; for (int j = n - 1; j >= 0; j--) { if (a[i] + a[j] == 0 && abs(d - i) >= abs(j - i)) { d = j; } } if (mask >> i & 1) { int v = a[d]; a.erase(a.begin() + d); if (d < i) a.insert(a.begin() + i, v); else a.insert(a.begin() + 1 + i, v); } else { int v = a[i]; a.erase(a.begin() + i); if (d > i) a.insert(a.begin() + d, v); else a.insert(a.begin() + 1 + d, v); } ans += abs(d - i); } for (int i = 0; i < n; i += 2) { ans += (a[i] > 0); } res = min(ans, res); } 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...