Pagini recente » Cod sursa (job #2066569) | Cod sursa (job #2336485) | Cod sursa (job #960969) | Cod sursa (job #1690840) | Cod sursa (job #848837)
Cod sursa(job #848837)
#include <fstream>
#include <algorithm>
#include <cstring>
#define MAX 1300
#define INF 0x3f3f3f3f
using namespace std;
int v[MAX], aux[MAX], perm[MAX], n, minim = INF;
bool taken[MAX];
int solve()
{
int time = 0;
for(int i = 0; i < n; i++) if(v[i] == perm[i]) taken[i] = true; else taken[i] = false;
for(int i = 0; i < n; i++)
{
if(v[i] == perm[i]) continue;
for(int j = 0; j < n; j++)
{
if(!taken[j] && perm[i] == v[j])
{
taken[j] = true;
time += 20 + abs(i - j);
break;
}
}
}
return time;
}
int main()
{
ifstream in("barman.in");
in>>n;
for(int i = 0; i < n; i++)
{
in>>v[i]; aux[i] = v[i];
}in.close();
sort(aux, aux + n);
for(int i = n; i < 2 * n; i++) aux[i] = aux[i - n];
for(int i = 0; i < n; i++)
{
for(int j = i; j < i + n; j++)
perm[j - i] = aux[j];
minim = min(minim, solve());
}
ofstream out("barman.out"); out<<minim; out.close();
return 0;
}