제출 #576293

#제출 시각아이디문제언어결과실행 시간메모리
576293eecsSwap Swap Sort (CCO21_day1problem1)C++17
3 / 25
5057 ms98428 KiB
#include <bits/stdc++.h> using namespace std; const int maxn = 100010; int n, m, q, a[maxn], p[maxn]; namespace BIT { int c[maxn]; void add(int p, int v) { for (; p <= m; p += p & -p) c[p] += v; } int query(int p) { int s = 0; for (; p; p -= p & -p) s += c[p]; return s; } } // namespace BIT int main() { ios::sync_with_stdio(0), cin.tie(0); cin >> n >> m >> q; for (int i = 1; i <= n; i++) { cin >> a[i]; } iota(p + 1, p + m + 1, 1); long long ans = 0; for (int i = n; i; i--) { ans += BIT::query(a[i] - 1), BIT::add(a[i], 1); } vector<vector<int>> cnt(m + 1, vector<int>(m + 1)); for (int i = 1; i <= n; i++) { for (int j = i + 1; j <= n; j++) { cnt[a[i]][a[j]]++; } } while (q--) { int k; cin >> k; ans += cnt[p[k]][p[k + 1]]; swap(p[k], p[k + 1]), ans -= cnt[p[k]][p[k + 1]]; cout << ans << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...