제출 #1110850

#제출 시각아이디문제언어결과실행 시간메모리
1110850elotelo966Arranging Shoes (IOI19_shoes)C++17
10 / 100
1100 ms3656 KiB
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;

//#define int long long
#define OYY LLONG_MAX
#define mod 1000000007
#define faster ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define FOR for(int i=1;i<=n;i++)
#define mid (start+end)/2
#define lim 300005
#define fi first
#define se second

int n,cev,as_cev=INT_MAX;

vector<int> v;

int dizi[lim];

inline void brute(int sira,int mask){
	//cout<<sira<<" "<<mask<<endl;
	if(sira>n){
		bool stop=1;
		/*FOR{
			cout<<dizi[i]<<" ";
		}
		cout<<endl<<endl;*/
		FOR{
			if(dizi[i]<0 && dizi[i]==-dizi[i+1]){i++;continue;}
			stop=0;
			break;
		}
		if(stop)as_cev=min(as_cev,cev);
		return ;
	}
	FOR{
		if(mask&(1<<(i-1)))continue;
		int eski=dizi[sira];
		dizi[sira]=v[i-1];
		cev+=abs(sira-i);
		brute(sira+1,mask|(1<<(i-1)));
		cev-=abs(sira-i);
		dizi[sira]=eski;
	}
}

long long count_swaps(std::vector<int> s) {
	n=s.size();
	int tut=1;
	for(auto x:s){
		v.push_back(x);
		dizi[tut++]=x;
	}
	
	//cout<<n<<" ppp"<<endl;
	
	brute(1,0);
	
	return as_cev/2;
}

/*
int main(){
	//faster
	int m;cin>>m;
	
	vector<int> vv;
	
	for(int i=1;i<=m;i++){
		int x;cin>>x;
		vv.push_back(x);
	}
		
	cout<<count_swaps(vv)<<'\n';
	
	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...