Submission #155364

#TimeUsernameProblemLanguageResultExecution timeMemory
155364Sasuke0004Arranging Shoes (IOI19_shoes)C++17
0 / 100
286 ms282180 KiB
#include<bits/stdc++.h> #define f first #define s second #define mp make_pair #define ll long long #define pb push_back #define left 2*h,l,(l+r)/2,L,R #define right 2*h+1,(l+r)/2+1,r,L,R #define tree ll h,ll l,ll r,ll L,ll R using namespace std; ll sg[4000006],fx[4000006],n,ans; vector<ll>v[4000006],v1[4000006],v2[4000006]; void upd(tree) { if(l>r)return; if(l>R)return; if(L>r)return; if(l==r) { sg[h]=sg[h]^(1); return; } upd(left); upd(right); sg[h]=sg[2*h]+sg[2*h+1]; } ll get(tree) { if(l>r)return 0; if(l>R)return 0; if(L>r)return 0; if(l>=L && r<=R)return sg[h]; else return (get(left)+get(right)); } int64_t count_swaps(vector<int> x) { n=x.size(); for(ll i=0;i<n;i++) { if(x[i]<0) { v1[-x[i]].pb(i); } else { v2[x[i]].pb(i); } } for(ll i=1;i<=n;i++) { for(ll j=0;j<int(v1[i].size());j++) { if(v1[i][j]>v2[i][j]){ans++;swap(v1[i][j],v2[i][j]);} fx[v1[i][j]]=v2[i][j]; } } for(ll i=0;i<n;i++) { upd(1,0,n-1,i,i); } for(ll i=0;i<n;i++) { ans+=get(1,0,n-1,i+1,fx[i]-1); upd(1,0,n-1,fx[i],fx[i]); } cout<<ans; }

Compilation message (stderr)

shoes.cpp: In function 'int64_t count_swaps(std::vector<int>)':
shoes.cpp:68:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
#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...