Cod sursa(job #1743691)

Utilizator akaprosAna Kapros akapros Data 18 august 2016 16:12:38
Problema Barman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <bits/stdc++.h>
#define maxN 602
#define inf 1000000000
using namespace std;
int n, v[maxN], p[maxN], ans;
bool ok[maxN];
void read()
{
    int i;
    freopen("barman.in", "r", stdin);
    scanf("%d", &n);
    for (i = 1; i <= n; ++ i)
    {
        scanf("%d", &v[i]);
        p[i] = v[i];
    }
}
void solve()
{
    int i, j, sum = 0;

    sort(p + 1, p + n + 1);
    ans = inf;
    for (i = 1; i <= n; ++ i)
    {
        sum = 0;
        int cp = p[1];
        for (j = 1; j < n; ++ j)
            p[j] = p[j + 1];
        p[n] = cp;
        for (j = 1; j <= n; ++ j)
            if (v[j] != p[j])
                ok[j] = 0;
            else
                ok[j] = 1;
        for (j = 1; j <= n; ++ j)
            if (v[j] != p[j])
            {
                int k;
                for (k = 1; ok[k] || v[j] != p[k]; ++ k);
                sum += abs(j - k) + 20;
                ok[k] = 1;
            }
        if (sum < ans)
            ans = sum;
    }
}
void write()
{
    freopen("barman.out", "w", stdout);
    printf("%d\n", ans);
}
int main()
{
    read();
    solve();
    write();
    return 0;
}