Submission #488345

#TimeUsernameProblemLanguageResultExecution timeMemory
488345SlavicGArranging Shoes (IOI19_shoes)C++17
0 / 100
0 ms332 KiB
#include "bits/stdc++.h" using namespace std; #define ll long long #define forn(i,n) for(int i=0;i<n;i++) #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(),v.rend() #define pb push_back #define sz(a) (int)a.size() const int N = 2e5 + 10; ll fen[N]; void modif(int u){ for(int i = u + 1;i < N; i += (i & (-i))){ ++fen[i]; } } ll query(int l, int r){ ll ret = 0; for(int i = r + 1;i > 0; i-= i &(-i)){ ret += fen[i]; } for(int i = l;i > 0;i -= i & (-i)){ ret -= fen[i]; } return ret; } ll count_swaps(vector<int> s){ int n = sz(s); vector<int> left; vector<int> v; vector<int> poz(n + 1, 0); vector<int> k[n + 5]; for(int i = 0;i < n; ++i){ s[i] *= -1; if(s[i] > 0){ left.pb(i); }else{ k[-s[i]].pb(i); } } for(int i = 0;i <= n;++i){ if(sz(k[i]))reverse(all(k[i])); } reverse(all(left)); for(int i = 0;i < n; ++i){ if(i % 2 == 0){ v.pb(left.back()); left.pop_back(); }else{ int x = s[v.back()]; assert(sz(k[x]) > 0); v.pb(k[x].back()); k[x].pop_back(); } } for(int i = 0;i < n; ++i){ poz[v[i]] = i; } ll ans = 0; for(int i = n-1;i >= 0; --i){ ans += query(poz[i] + 1, n + 1); modif(poz[i]); } return ans; } /* void solve() { int n; cin >> n; vector<int> a(n); for(int i = 0;i < n; ++i){ cin >> a[i]; } cout << count(a) << "\n"; } int32_t main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int t = 1; //cin >> t; while(t--) { solve(); } } */
#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...