Submission #437475

#TimeUsernameProblemLanguageResultExecution timeMemory
437475robertbarbu27Arranging Shoes (IOI19_shoes)C++14
100 / 100
93 ms12012 KiB
#include <bits/stdc++.h> #define nl '\n' #define pb push_back #define ll long long #define VMAX 100001 #define NMAX 35005 #define INF 10000000000000000 using namespace std; vector<int> poz[200005]; int v[200005],ant[200005],N; int aib[200005]; void update(int poz,int val) { for(int i=poz;i<=2*N;i+=(i&(-i))) { aib[i]+=val; } } int query(int poz) { int ans=0; for(int i=poz;i>0;i-=i&(-i)) { ans+=aib[i]; } return ans; } long long count_swaps(std::vector<int> s) { N=s.size()/2; //cout<<N<<" "; for(int i=0;i<2*N;i++) { poz[abs(s[i])].pb(i+1); v[i+1]=s[i]; } //cout<<N<<" "; long long ans=0; for(int i=1;i<=N;i++) { vector<int> pl,mn; for(int j=0;j<poz[i].size();j++) { if(v[poz[i][j]]>0) { pl.pb(poz[i][j]); } else mn.pb(poz[i][j]); } for(int j=0;j<mn.size();j++) { if(mn[j]>pl[j]) { swap(mn[j],pl[j]); swap(v[mn[j]],v[pl[j]]); ans++; } ant[pl[j]]=mn[j]; } } for(int i=2*N;i>=1;i--) { if(v[i]>0) { int x=i-query(i); int y=ant[i]-query(ant[i]); ans+=x-y-1; //cout<<ant[i]<<" "; update(ant[i],1); } } return ans; } /* int main() { int n; assert(1 == scanf("%d", &n)); vector<int> S(2 * n); for (int i = 0; i < 2 * n; i++) assert(1 == scanf("%d", &S[i])); fclose(stdin); long long result = count_swaps(S); printf("%lld\n", result); fclose(stdout); return 0; } */

Compilation message (stderr)

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:43:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |         for(int j=0;j<poz[i].size();j++)
      |                     ~^~~~~~~~~~~~~~
shoes.cpp:51:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |         for(int j=0;j<mn.size();j++)
      |                     ~^~~~~~~~~~
#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...