Submission #719167

#TimeUsernameProblemLanguageResultExecution timeMemory
719167AndrijaMArranging Shoes (IOI19_shoes)C++14
85 / 100
29 ms2512 KiB
#include <bits/stdc++.h>

using ll=long long;

using namespace std;


ll count_swaps(vector<int> a) {
	ll n = a.size();
	ll ans = 0;
    if(n<=2010)
    {
        bool vis[n];
        memset(vis,0,sizeof vis);
        for(ll i=0;i<n;i++)
        {
            if(vis[i])continue;
            ll j=i+1;
            ll val=0;
            while(a[j]!=-a[i] || vis[j])
            {
                if(!vis[j])val++;
                j++;
            }
            if(a[i]>0)
            {
                ans+=val+1;
            }
            else
            {
                ans+=val;
            }
            vis[i]=vis[j]=true;
        }
    }
    else
    {
        vector<int>v;
        for(ll idx=0;idx<n;idx++)
        {
            if(a[idx]<0)
            v.push_back(idx);
        }
        sort(v.begin(),v.end());
        ll k=0;
        for(ll idx=0;idx<v.size();idx++)
        {
            ans+=abs(v[idx]-k);
            k+=2;
        }
    }
	return ans;
}

Compilation message (stderr)

shoes.cpp: In function 'll count_swaps(std::vector<int>)':
shoes.cpp:46:25: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |         for(ll idx=0;idx<v.size();idx++)
      |                      ~~~^~~~~~~~~
#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...