Submission #850395

#TimeUsernameProblemLanguageResultExecution timeMemory
850395serifefedartarEkoeko (COCI21_ekoeko)C++17
0 / 110
1071 ms600 KiB
#include <bits/stdc++.h> using namespace std; #define fast ios::sync_with_stdio(0);cin.tie(0); #define s second #define f first typedef long long ll; const ll MOD = 1e9 + 7; const ll LOGN = 20; const ll MAXN = 1e5 + 5; vector<int> occ[26]; ll fen[MAXN]; ll query(int k) { ll res = 0; while (k > 0) { res += fen[k]; k -= k&-k; } return res; } void update(int k, ll val) { while (k < MAXN) { fen[k] += val; k += k&-k; } } int main() { fast int n; string s; cin >> n >> s; s = "#" + s; for (int i = n; i >= 1; i--) occ[s[i]-'a'].push_back(i); vector<int> v; for (int i = n+1; i <= 2*n; i++) { v.push_back(occ[s[i]-'a'].back()); occ[s[i]-'a'].pop_back(); } ll ans = 0; for (auto u : v) { ans += query(MAXN) - query(u); update(u, 1); } cout << ans << "\n"; }
#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...