Submission #288919

#TimeUsernameProblemLanguageResultExecution timeMemory
288919phillipArranging Shoes (IOI19_shoes)C++14
30 / 100
98 ms61556 KiB
#include "shoes.h"
#include <bits/stdc++.h>
#define ll long long
#define fast cin.tie(0);cout.tie(0);
#define order ios::sync_with_stdio(0);ios_base::sync_with_stdio(0);
#define pb push_back
using namespace std;
vector<int>v;
int n,dp[100009];
int bt(int x,vector<int>cur,int st=0)
{
    if(dp[x]!=-1)return dp[x];
    if(x==(1<<n)-1){return 0;}
    dp[x]=1e9;
    for(int i=0;i<n;i++)
    {
        if((1<<i)&x)continue;
        vector<int>con=cur;
        int c=0;
        for(int j=st*2;j<2*n;j++)
        {
            if(con[j]*(-1)==v[i])
            {
                while(j>st*2)
                {
                    c++;
                    swap(con[j],con[j-1]);
                    j--;
                }
                break;
            }
        }
        for(int j=st*2;j<2*n;j++)
        {
            if(con[j]==v[i])
            {
                while(j>st*2+1)
                {
                    c++;
                    swap(con[j],con[j-1]);
                    j--;
                }
                break;
            }
        }
        dp[x]=min(dp[x],bt(x+(1<<i),con,st+1)+c);
    }
    return dp[x];
}
long long count_swaps(vector<int> s) {
   n=s.size()/2;
    memset(dp,-1,sizeof(dp));
    if(n<=8)
    {
        for(int i=0;i<n*2;i++)
        {
            if(s[i]<0)continue;
            v.push_back(s[i]);
        }
        return bt(0,s);
    }
}

Compilation message (stderr)

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:62:1: warning: control reaches end of non-void function [-Wreturn-type]
   62 | }
      | ^
#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...