제출 #305409

#제출 시각아이디문제언어결과실행 시간메모리
305409knon0501Arranging Shoes (IOI19_shoes)C++14
50 / 100
38 ms9080 KiB
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
int c[2005];
queue<int> a[2005],b[2005];
long long count_swaps(std::vector<int> s) {
    int i,j;
    long long ans=0;
    int n=s.size();

    for(i=0 ; i<n ; i++){
        if(s[i]>0)
            a[s[i]].push(i);
        else
            b[-s[i]].push(i);
    }

    for(i=0 ; i<n ; i+=2){
        int k=0;
        int t=1e9;
        for(j=1 ; j*2<=n ; j++){
            if(!a[j].empty()){
                int x=a[j].front();
                int y=b[j].front();
                int xx=x-i+c[x];
                int yy=y-i+c[y]-(x>y);
                if(xx+yy<t){
                    t=xx+yy;
                    k=j;
                }
            }
        }
        for(j=a[k].front() ; j>=0 ; j--)c[j]++;
        for(j=b[k].front() ; j>=0 ; j--)c[j]++;
        a[k].pop();
        b[k].pop();
        ans+=t;

    }
    return ans;
}
#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...