Submission #1218780

#TimeUsernameProblemLanguageResultExecution timeMemory
1218780vtnooArranging Shoes (IOI19_shoes)C++20
10 / 100
428 ms31720 KiB
#include <bits/stdc++.h> #define forsn(i,s,n) for(int i=s; i<n; ++i) #define forn(i,n) forsn(i,0,n) #define pb push_back #define snd second #define fst first #define all(x) x.begin(), x.end() #define imp(x) for(auto __:x)cout<<__<<" "; cout<<endl; #define sz(c) int((c).size()) using namespace std; typedef long long ll; typedef pair<int, int> ii; typedef vector<int> vi; const int N=200'010; struct FTree{ vector<long long> fen; void init(){ fen.resize(N, 0); } ll sum(int x){ ll v=0; for(;x;x-=(x&-x)){ v+=fen[x]; } return v; } void upd(int x, int v){ for(;x<N;x+=(x&-x)){ fen[x]+=v; } } }; ll count_swaps(vi s) { int n=sz(s); ll ans=0; FTree fen; fen.init(); map<int, set<int>> mp; for(int i=0;i<n;i++){ mp[s[i]].insert(i); } for(int i=0; i<n; i++){ //~ cout<<"====================="<<endl; if(s[i]<0){ //left if(!mp[s[i]].count(i))continue; //~ cout<<s[i]<<endl; mp[s[i]].erase(i); if(mp[abs(s[i])].empty())continue; int v=*mp[abs(s[i])].begin(); //~ cout<<"v = "<<v<<endl; int index=fen.sum(v+1)-fen.sum(v)+v; //~ cout<<index<<endl; ans+=index-i-1; //~ cout<<ans<<endl; int l=i+1, r=v+1; fen.upd(l+1, 1); fen.upd(r+1, -1); mp[abs(s[i])].erase(mp[abs(s[i])].begin()); }else{ //right if(!mp[s[i]].count(i))continue; //~ cout<<s[i]<<endl; mp[s[i]].erase(i); if(mp[-s[i]].empty())continue; int v=*mp[-s[i]].begin(); //~ cout<<v<<endl; int index=fen.sum(v+1)-fen.sum(v)+v; //~ cout<<index<<endl; ans+=index-i; //~ cout<<ans<<endl; int l=i+1, r=v+1; fen.upd(l+1, 1); fen.upd(r+1, -1); mp[-s[i]].erase(mp[-s[i]].begin()); } } 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...