Pagini recente » Cod sursa (job #1709203) | Cod sursa (job #2957963) | Cod sursa (job #613772) | Cod sursa (job #3174739) | Cod sursa (job #2999673)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("barman.in");
ofstream out("barman.out");
int n;
int vec1[100], vec2[100];
int f(int p);
int mod(int x);
int main()
{
in >> n;
for (int i = 1; i <= n; i++)
{
in >> vec1[i];
vec2[i] = vec1[i];
}
bool k = true;
while (k)
{
k = false;
for (int i = 1; i < n; i++)
{
if (vec1[i] > vec1[i + 1])
{
int aux = vec1[i];
vec1[i] = vec1[i + 1];
vec1[i + 1] = aux;
k = true;
}
}
}
int mn = f(0);
for (int i = 1; i < n; i++)
{
int k = f(i);
if (k < mn)
{
mn = k;
}
}
out << mn;
}
int f(int p)
{
int vec3[100],timp=0;
for (int i = 1; i <= n; i++)
{
vec3[i] = 0;
}
for (int i = 1; i <= n; i++)
{
if (vec2[i] != vec1[i + p])
{
timp += 20;
for (int j = 1; j <= n; j++)
{
if (vec1[j] == vec2[i] && vec3[(j+p)%n] == 0)
{
int p2 = (j + p) % n;
vec3[p2] = 1;
if (mod(p2-i) < mod(i+n-p2))
{
timp += mod(p2 - i);
}
else {
timp += mod(i + n - p2);
}
break;
}
}
}
}
return timp;
}
int mod(int x)
{
if (x < 0) return -x;
return x;
}