Submission #427034

# Submission time Handle Problem Language Result Execution time Memory
427034 2021-06-14T11:55:56 Z Hazem Ancient Books (IOI17_books) C++14
0 / 100
2000 ms 204 KB
#include "books.h"
#include <bits/stdc++.h>
#define LL long long 

using namespace std;

const LL LINF  = 1e18;

int a[10],n;
vector<int>vec;

bool check(){

	bool q = 1;
	for(int i=0;i<n;i++)
		q &= (a[i]==vec[i]);
	
	return q;
}

LL bt(int pos,int cur,int cnt);

LL move(int pos,int cur,int cnt){

	LL ret = LINF;
	if(pos<n-1)
		ret = min(ret,bt(pos+1,cur,cnt+1));
	
	if(pos>0)
		ret = min(ret,bt(pos-1,cur,cnt+1));

	return ret;
}

LL bt(int pos,int cur,int cnt){

	if(!pos&&check())
		return cnt;
	
	if(cnt>16)
		return LINF;

	LL ret = LINF;
	ret = min(ret,move(pos,cur,cnt));
	
	// if(cur==-1){
	// 	cur = a[pos];
	// 	a[pos] = -1;
	// 	ret=  min(ret,move(pos,cur,cnt));
	// 	a[pos] = cur;
	// 	cur = -1;
	// }

	// if(a[pos]==-1){
	// 	a[pos] = cur;
	// 	cur = -1;
	// 	ret = min(ret,move(pos,cur,cnt));
	// 	cur = a[pos];
	// 	a[pos] = -1;
	// }

	swap(cur,a[pos]);
	ret = min(ret,move(pos,cur,cnt));
	swap(cur,a[pos]);

	return ret;
}

long long minimum_walk(std::vector<int> P, int s) {	
	
	vec = P;
	n = P.size();
	for(int i=0;i<n;i++)
		a[i] = i;

	return bt(0,-1,0);
}
# Verdict Execution time Memory Grader output
1 Execution timed out 2083 ms 204 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2083 ms 204 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2083 ms 204 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2066 ms 204 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2083 ms 204 KB Time limit exceeded
2 Halted 0 ms 0 KB -