Submission #1150891

#TimeUsernameProblemLanguageResultExecution timeMemory
1150891gygArranging Shoes (IOI19_shoes)C++20
50 / 100
1098 ms28608 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; #define sig signed #define int long long #define arr array #define vec vector #define pii pair<int, int> #define fir first #define sec second const int N = 2e5 + 5; int n; arr<int, N> a; arr<int, N> prm; void prm_cmp() { map<int, vec<int>> ng, ps; for (int i = 1; i <= n; i++) { if (a[i] < 0) ng[-a[i]].push_back(i); else ps[a[i]].push_back(i); } vec<pii> ord; for (pair<int, vec<int>> x : ng) for (int i = 0; i < x.sec.size(); i++) ord.push_back({x.sec[i], ps[x.fir][i]}); auto cmp = [](pii x, pii y) { return min(x.fir, x.sec) < min(y.fir, y.sec); }; sort(ord.begin(), ord.end(), cmp); for (int i = 0; i < ord.size(); i++) prm[ord[i].fir] = 2 * i + 1, prm[ord[i].sec] = 2 * i + 2; } int ans_cmp() { int ans = 0; for (int i = 1; i <= n; i++) for (int j = i + 1; j <= n; j++) ans += (prm[i] > prm[j]); return ans; } int count_swaps(vec<sig> _a) { n = _a.size(); for (int i = 1; i <= n; i++) a[i] = _a[i - 1]; prm_cmp(); int ans = ans_cmp(); // for (int i = 1; i <= n; i++) cout << i << ": " << prm[i] << '\n'; return ans; }
#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...