Submission #597899

#TimeUsernameProblemLanguageResultExecution timeMemory
597899HanksburgerArranging Shoes (IOI19_shoes)C++17
100 / 100
62 ms15308 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; int a[200005], pos2[200005], n, cnt; vector<int> pos[200005]; void upd(int x) { for (int i=x; i<n*2; i+=i&(-i)) a[i]++; } int qry(int x) { int sum=0; for (int i=x; i; i-=i&(-i)) sum+=a[i]; return sum; } long long count_swaps(vector<int> v) { n=cnt=v.size()/2; for (int i=0; i<n*2; i++) pos[v[i]+n].push_back(i); long long ans=0; for (int i=1; i<=n; i++) { for (int j=0; j<pos[n+i].size(); j++) { if (j) { v[pos[n+i][j]]=++cnt; v[pos[n-i][j]]=-cnt; } if (pos[n+i][j]<pos[n-i][j]) { swap(v[pos[n+i][j]], v[pos[n-i][j]]); ans++; } } } for (int i=0; i<n*2; i++) if (v[i]>0) pos2[v[i]]=i; for (int i=0; i<n*2; i++) { if (v[i]<0) { int p=pos2[-v[i]]; ans+=p-i-1-qry(p)+qry(i); upd(p); } } return ans; }

Compilation message (stderr)

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:26:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |         for (int j=0; j<pos[n+i].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...