Submission #916214

#TimeUsernameProblemLanguageResultExecution timeMemory
916214AiperiiiArranging Shoes (IOI19_shoes)C++14
30 / 100
109 ms15940 KiB
#include <bits/stdc++.h> #include "shoes.h" using namespace std; #define all(x) x.begin(),x.end() #define ff first #define ss second #define pb push_back const int N=2e5+5; long long t[N*4]; void build(int v,int tl,int tr){ if(tl==tr)t[v]=1; else{ int tm=(tl+tr)/2; build(v*2,tl,tm); build(v*2+1,tm+1,tr); t[v]=t[v*2]+t[v*2+1]; } } void update(int v,int tl,int tr,int pos){ if(tl==tr)t[v]=0; else{ int tm=(tl+tr)/2; if(pos<=tm)update(v*2,tl,tm,pos); else update(v*2+1,tm+1,tr,pos); t[v]=t[v*2]+t[v*2+1]; } } long long get(int v,int tl,int tr,int l,int r){ if(r<tl or tr<l)return 0; if(l<=tl && tr<=r)return t[v]; int tm=(tl+tr)/2; return get(v*2,tl,tm,l,r)+get(v*2+1,tm+1,tr,l,r); } long long count_swaps(vector<int> s) { int n=s.size(); s.insert(s.begin(),0); build(1,1,n); vector <pair <int,int> > v[n+1]; for(int i=1;i<=n;i++){ if(s[i]>0)v[s[i]].pb({i,1}); if(s[i]<0)v[-s[i]].pb({i,0}); } vector <int> done(n+1); long long ans=0; for(auto val : s){ int i=abs(val); if(done[i])continue; if(v[i].size()==0)continue; for(int j=0;j<v[i].size();j++){ update(1,1,n,v[i][j].ff); } vector <int> x,y; int p=v[i][0].ff; for(int j=1;j<v[i].size();j++){ ans+=get(1,1,n,p,v[i][j].ff); } for(int j=0;j<v[i].size();j++){ if(j%2==0 && v[i][j].ss==1)x.pb(j); if(j%2==1 && v[i][j].ss==0)y.pb(j); } for(int j=0;j<x.size();j++){ ans+=abs(x[j]-y[j]); } done[i]=1; } return ans; }

Compilation message (stderr)

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:51:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |        for(int j=0;j<v[i].size();j++){
      |                    ~^~~~~~~~~~~~
shoes.cpp:57:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |        for(int j=1;j<v[i].size();j++){
      |                    ~^~~~~~~~~~~~
shoes.cpp:60:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   60 |        for(int j=0;j<v[i].size();j++){
      |                    ~^~~~~~~~~~~~
shoes.cpp:65:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   65 |        for(int j=0;j<x.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...