Submission #560204

#TimeUsernameProblemLanguageResultExecution timeMemory
560204jk410Arranging Shoes (IOI19_shoes)C++17
50 / 100
1095 ms72140 KiB
#include <bits/stdc++.h>
#include "shoes.h"
using namespace std;
typedef long long ll;
int N;
int S[200001],Idx[200001];
bool Used[200001];
queue<int> A[100001];
int my_abs(int x){
    if (x<0)
        return -x;
    return x;
}
ll count_swaps(vector<int> s){
    ll ans=0;
    N=(int)s.size();
    for (int i=1; i<=N; i++)
        S[i]=s[i-1];
    for (int i=1; i<=N; i++){
        int x=my_abs(S[i]);
        if (!A[x].empty()&&S[A[x].front()]+S[i]==0){
            Idx[A[x].front()]=i;
            A[x].pop();
        }
        else
            A[x].push(i);
    }
    for (int i=1; i<=N; i++){
        if (Used[i])
            continue;
        for (int j=i+1; j<Idx[i]; j++)
            ans+=(!Used[j]);
        if (S[i]>S[Idx[i]])
            ans++;
        Used[i]=Used[Idx[i]]=true;
    }
    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...