Submission #207310

#TimeUsernameProblemLanguageResultExecution timeMemory
207310balbitArranging Shoes (IOI19_shoes)C++14
100 / 100
176 ms140152 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define SZ(x) (int)((x).size()) #define ALL(x) x.begin(),x.end() #define pii pair<int, int> #define f first #define s second #ifdef BALBIT #define bug(...) cerr<<"#"<<__LINE__<<": "<<#__VA_ARGS__<<" = ", _do(__VA_ARGS__) template<typename T> void _do(T &&x) {cerr<<x<<endl;} template<typename T, typename ...S> void _do(T &&x, S&&...y) {cerr<<x<<", "; _do(y...);} #define IOS() #else #define IOS() ios::sync_with_stdio(0), cin.tie(0) #define endl '\n' #define bug(...) #endif // BALBIT const int maxn = 2e5+5; queue<pii> tp[maxn]; ll s[maxn]; ll QU(int e) { // Number of things leq ll re = 0; for (e++; e>0; e-=e&-e) re += s[e]; return re; } void MO(int e, int v) { for (e++;e<maxn;e+=e&-e)s[e]+=v; } inline int sgn(int x){return x>0?1:-1;} ll count_swaps(vector<int> s) { int n = s.size(); for (int i = 0; i<n; i++) { MO(i,1); } ll re = 0; for (int i = 0; i<n; i++) { int x = abs(s[i]); int ig = sgn(s[i]); if (tp[x].size()==0 || sgn(tp[x].front().s) == ig) { tp[x].push({i,s[i]}); }else{ re += QU(i-1) - QU(tp[x].front().f); if (ig == -1) ++re; MO(i,-1); MO(tp[x].front().f,1); tp[x].pop(); } } // for (int i = 0; i<n*2; i++) { // cerr<<s[i]<<' '; // } // cerr<<endl; return re; } #ifdef BALBIT signed main(){ IOS(); int n; cin>>n; vector<int> x(n*2); for (int i = 0; i<n*2; i++) cin>>x[i]; cout<<count_swaps(x)<<endl; } #endif
#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...