Submission #1274059

#TimeUsernameProblemLanguageResultExecution timeMemory
1274059almazArranging Shoes (IOI19_shoes)C++20
0 / 100
1 ms332 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; // #define int long long // #define endl '\n' #define ff first #define ss second #define pb push_back #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define ar array const int MOD = 1e9 + 7, N = 2e5 + 5; long long INF = 1e18; vector <int> f; int n; int get(int x){ // cout<<x<<endl; int res = 0; for(int i = x;i > 0;i = (i & -i) - 1){ res += f[i]; } return res; } int getsum(int l ,int r){ if(l == 0){ return get(r); } return get(r) - get(l - 1); } void update(int x){ // cout<<x<<endl; for(int i = x;i <= n;i = (i | (i + 1))){ f[i]++; } } long long count_swaps(std::vector<int> s) { int n = s.size(); map<int, queue <int>> mp; for(int i = n - 1;i >= 0;i--){ mp[s[i]].push(i); } int ans = 0; for(int i = 0;i < n;i++){ if(mp[s[i]].size() == 0) continue; int j = mp[-s[i]].front(); int sum = getsum(i , j); // cout<<sum<<endl; ans += (j - (i + 1)) - sum; mp[s[i]].pop(); mp[-s[i]].pop(); update(j); } 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...