Submission #826832

#TimeUsernameProblemLanguageResultExecution timeMemory
826832vjudge1Arranging Shoes (IOI19_shoes)C++17
10 / 100
16 ms1864 KiB
#include<bits/stdc++.h>
#include "shoes.h"

using namespace std;

#define all(x) x.begin(), x.end()
#define pb push_back
#define ll long long

int tt[10];

 
long long count_swaps(vector<int> a){
	int n = a.size();
	if(n == 2){
		if(a[0] > 0){
			return 1; 
		}	
		else{
			return 0;
		}
	}
	if(n <= 8){
		vector<int> q, qq;
		for(int i=0; i<n; i++){
			qq.pb(a[i]);
		}
		sort(all(qq));
		for(int i=0; i<n/2; i++){
			q.pb(abs(a[i]));
		}
		sort(all(q));
		ll ans=1e18;
		do{
			for(int i=0; i<n; i++){
				qq[i] = a[i];
			}
			ll res=0;
			//ll k=0;
			for(int i=0; i<n/2; i++){
				for(int j=i * 2; j<n; j++){
					if(qq[j] == -q[i]){
						for(int k=j; k>i * 2; k--){
							swap(qq[k], qq[k-1]);
							res++;
						}
						break;
					}
				}
				for(int j=i * 2 + 1; j<n; j++){
					if(qq[j] == q[i]){
						for(int k=j; k>i * 2 + 1; k--){
							swap(qq[k], qq[k-1]);
							res++;
						}
						break;
					}
				}
			}
			ans = min(ans, res);
			if(false){
				for(int i=0; i<n/2; i++){
					cout<<q[i]<<' ';
				}
				cout<<'\n';
			}
		}while(next_permutation(all(q)));
		return ans;
	}
	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...