Pagini recente » Cod sursa (job #541768) | Cod sursa (job #200433) | Monitorul de evaluare | Cod sursa (job #214920) | Cod sursa (job #771591)
Cod sursa(job #771591)
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 605;
int n, minim = 0x3f3f3f3f;
int p[N], sortat[N], op[N];
void initializeaza(int a[], int n)
{
for (int i = 1; i <= n; ++i)
a[i] = 0;
}
void perm(int a[], int n)
{
int aux = a[1];
for (int i = 1; i < n; ++i)
a[i] = a[i + 1];
a[n] = aux;
}
int timp(int a[], int b[], int op[], int n)
{
int t = 0;
for (int i = 1; i <= n; ++i) {
if (a[i] == b[i]) {
op[i] = a[i];
continue;
}
for (int j = 1; j <= n; ++j)
if (a[i] == b[j] && op[j] == 0) {
t += abs(i - j) + 20;
op[j] = a[i];
break;
}
}
return t;
}
int main()
{
freopen ("barman.in", "r", stdin);
freopen ("barman.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {
scanf("%d", &p[i]);
sortat[i] = p[i];
}
sort(sortat + 1, sortat + n + 1);
for (int i = 1; i <= n; ++i) {
initializeaza(op, n);
minim = min(minim, timp(p, sortat, op, n));
perm(sortat, n);
}
printf("%d", minim);
return 0;
}