Submission #1212472

#TimeUsernameProblemLanguageResultExecution timeMemory
1212472simona1230Arranging Shoes (IOI19_shoes)C++20
50 / 100
1094 ms18624 KiB
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> l[200001],r[200001];
long long count_swaps(std::vector<int> s)
{
    for(int i=0;i<s.size();i++)
    {
        if(s[i]<0)l[-s[i]].push_back(i);
        else r[s[i]].push_back(i);
    }

    long long ans=0;
    vector<pair<int,int> > v;
    for(int i=0;i<s.size();i++)
    {
        for(int j=0;j<l[i].size();j++)
        {
            if(l[i][j]>r[i][j])ans++;
            v.push_back({min(l[i][j],r[i][j]),max(l[i][j],r[i][j])});
        }
    }
    //cout<<ans<<endl;

    for(int i=0;i<v.size();i++)
    {
        //cout<<v[i].first<<" "<<v[i].second<<endl;
        for(int j=i+1;j<v.size();j++)
        {
            if(v[i].first<v[j].first&&v[j].second<v[i].second)ans+=2;
            if(v[i].first<v[j].first&&v[j].first<v[i].second&&v[i].second<v[j].second)ans++;

            swap(v[i],v[j]);
            if(v[i].first<v[j].first&&v[j].second<v[i].second)ans+=2;
            if(v[i].first<v[j].first&&v[j].first<v[i].second&&v[i].second<v[j].second)ans++;
            swap(v[i],v[j]);
        }
    }
    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...