제출 #159198

#제출 시각아이디문제언어결과실행 시간메모리
159198MathewArranging Shoes (IOI19_shoes)C++14
100 / 100
272 ms144200 KiB
#include<bits/stdc++.h> #define MAX 500000 using namespace std; long long n,to[200050],pairs=0,br=0; queue <long long> found[200050]; long long from[200050],perm[200050]; int tree[MAX+1]; int query(int idx) { int sum=0; ++idx; for(; idx < MAX;idx+=(idx & -idx))sum+=tree[idx]; return sum; } void update(int idx, int delta) { ++idx; for(; idx >0;idx-=(idx & -idx))tree[idx]+=delta; } long long count_swaps(vector <int> shoes) { long long i,j; n=shoes.size()/2; for(i=0;i<2*n;i++)perm[i]=i; for(i=0;i<2*n;i++) { if(shoes[i]<0) { if(found[shoes[i]+n].empty()==false) { to[i]=found[shoes[i]+n].front(); found[shoes[i]+n].pop(); } else { to[i]=pairs; found[n-shoes[i]].push(pairs+1); pairs+=2; } } else { if(found[shoes[i]+n].empty()==false) { to[i]=found[shoes[i]+n].front(); found[shoes[i]+n].pop(); } else { to[i]=pairs+1; found[n-shoes[i]].push(pairs); pairs+=2; } } } for(i=0;i<2*n;i++)from[to[i]]=i; //for(i=0;i<2*n;i++)cout<<to[i]<<' ';cout<<endl; //for(i=0;i<2*n;i++)cout<<from[i]<<' ';cout<<endl; for(i=0;i<2*n;i++) { int curr=query(from[i])+from[i]; br+=(long long)abs(curr-i); update(from[i],1); } return br; }

컴파일 시 표준 에러 (stderr) 메시지

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:27:17: warning: unused variable 'j' [-Wunused-variable]
     long long i,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...