Submission #1322374

#TimeUsernameProblemLanguageResultExecution timeMemory
1322374ElayV13Arranging Shoes (IOI19_shoes)C++20
0 / 100
0 ms332 KiB
#include "shoes.h"
#include "bits/stdc++.h"
using namespace std;

#define ll long long

ll get(vector<int>p,vector<int>s)
{
   vector<int>need;
   for(int i=0;i<p.size();i++)
   {
      need.push_back(-p[i]);
      need.push_back(p[i]);
   }
   int n=(int)s.size();
   vector<bool>used(n,false);
   long long res=0;
   for(int i=0;i<need.size();i++)
   {
      if(need[i]>0) continue;
      long long f=-1,si=-1;
      for(int j=0;j<n;j++)
      {
         if(used[j]) continue;
         if(s[j]==abs(need[i])&&f==-1){
            f=j;
            break;
         }
      }
      used[f]=1;
      for(int j=0;j<n;j++)
      {
         if(used[j]) continue;
         if(s[j]==need[i]&&si==-1){
            si=j;
            break;
         }
      }
      used[si]=1;
      int add=max(0ll,f-i)+max(0ll,si-i);
      if(!add&&(f<si)) ++add;
      res+=add;
   }
   return res;
}

ll count_swaps(vector<int>s)
{
   int n=(int)s.size();
   vector<int>p;
   for(int i=0;i<n;i++)
   {
      if(s[i]>0) p.push_back(s[i]);
   }
   sort(p.begin(),p.end());
   ll res=get(p,s);
   while(next_permutation(p.begin(),p.end())) res=min(res,get(p,s));
   return res;
}
#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...