제출 #1150919

#제출 시각아이디문제언어결과실행 시간메모리
1150919danglayloi1Arranging Shoes (IOI19_shoes)C++20
10 / 100
9 ms19040 KiB
#include "shoes.h"
#include <bits/stdc++.h>
#define ii pair<int, int>
#define fi first
#define se second
#define inf 0x3f3f3f3f3f3f3f3f
using namespace std;
using ll = long long;
const ll mod=1e9+7;
const int nx=2e5+5;
set<int> l[nx], r[nx];
bool vis[nx];
ll count_swaps(vector<int> a)
{
    ll ans=0;
    int n=a.size();
    for(int i = 0; i <= n; i++)
        l[i].clear(), r[i].clear(), vis[i]=0;
    for(int i = 0; i < n; i++)
        if(a[i]<0) l[-a[i]].insert(i);
        else r[a[i]].insert(i);
    for(int i = 0; i < n; i++)
    {
        if(vis[i]) continue;
        int x=abs(a[i]);
        int pos;
        if(a[i]<0) pos=*r[x].begin(), r[x].erase(pos), l[x].erase(i);
        else pos=*l[x].begin(), l[x].erase(pos), ans++, r[x].erase(i);
        vis[i]=vis[pos]=1;
        ans+=pos-i-1;
    }
    return ans;
}
// int main()
// {
//     cout<<count_swaps({2, 1, -1, -2});
// }
#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...