제출 #576292

#제출 시각아이디문제언어결과실행 시간메모리
576292eecsSwap Swap Sort (CCO21_day1problem1)C++17
0 / 25
5047 ms980 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); } while (q--) { int k; cin >> k; for (int i = 1; i <= n; i++) { for (int j = i + 1; j <= n; j++) { if (a[i] == p[k] && a[j] == p[k + 1]) ans++; if (a[i] == p[k + 1] && a[j] == p[k]) ans--; } } swap(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...