Submission #1273312

#TimeUsernameProblemLanguageResultExecution timeMemory
1273312quanduongxuan12Arranging Shoes (IOI19_shoes)C++20
10 / 100
13 ms1964 KiB
#include <bits/stdc++.h>
#include "shoes.h"
using namespace std;
#define name "shoes"
#define MAXN 100005
#define pb push_back
#define pf push_front
#define ll long long
#define ii pair<int, int>
#define fs first
#define sc second
#define ill pair<int, ll>
#define lli pair<ll, int>
#define llll pair<ll, ll>
#define all(v) v.begin(),v.end()
#define uni(v) v.erase(unique(all(v)),v.end())
#define bit(n,i) (((n)>>(i))&1)
#define FOR(i,a,b) for (int i=(a),_b=(b); i<=_b; i++)
#define FORD(i,a,b) for (int i=(a),_b=(b); i>=_b; i--)
#define MASK(i) (1LL<<(i))
const int INF=1e9;
const int MOD=1e9+7;
void add(int &u, int v){
    u+=v;
    if (u>=MOD) u-=MOD;
}
void sub(int &u, int v){
    u-=v;
    if (u<0) u+=MOD;
}
void minimize(ll &u, ll v){
    u=min(u,v);
}
void maximize(int &u, int v){
    u=max(u,v);
}
long long Rand(long long l, long long r){
    ll tmp=0;
    FOR(i,1,4) tmp=((tmp<<15)^(((1<<15)-1)&rand()));
    return l+tmp%(r-l+1);
}
namespace sub2{
    ll solve(vector<int> S){
        vector<int> perm;
        FOR(i,0,(int)S.size()-1) if (S[i]<0) perm.pb(i);
        vector<int> a,b;
        ll kq=1e18;
        do{
            a=S;
            b.clear();
            ll res=0;
            for (int id:perm){
                b.pb(S[id]);
                b.pb(-S[id]);
            }
            FOR(i,0,(int)S.size()-1){
                FOR(j,i,(int)S.size()-1) if (b[i]==a[j]){
                    int u=j;
                    while (u>i){
                        res++;
                        swap(a[u],a[u-1]);
                        --u;
                    }
                    break;
                }
            }
            minimize(kq,res);
        }
        while (next_permutation(all(perm)));
        return kq;
    }
}
ll count_swaps(vector<int> S){
    if (S.size()<=8) return sub2::solve(S);
    //if (sub3::check(S)) return sub3::solve(S);
    //if (sub4::check(S)) return sub4::solve(S);
    return 0;
}
/*
int main()
{
    freopen(name".inp","r",stdin);
    freopen(name".out","w",stdout);
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int n;
    cin>>n;
    vector<int> a;
    FOR(i,1,2*n){
        a.emplace_back();
        cin>>a[i-1];
    }
    cout<<count_swaps(a);
    return 0;
}
*/
#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...