Cod sursa(job #1331064)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 31 ianuarie 2015 12:08:21
Problema Barman Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <cstdio>
#include <algorithm>
#include <cmath>

#define NMAX 607

using namespace std;

int a[NMAX], b[NMAX * 2], Viz[NMAX], Min = (1 << 30);
int n;

int main(){
    freopen("barman.in", "r", stdin);
    freopen("barman.out", "w", stdout);
    scanf("%d", &n);
    for(int i = 1; i <= n; ++i){
        scanf("%d", &a[i]);
        b[i] = a[i];
    }
    sort(b + 1, b + n + 1);
    for(int i = 1; i <= n; ++i)
        b[i + n] = b[i];
    for(int i = 1; i <= n; ++i){
        int Ans = 0;
        for(int j = 1; j <= n * 2; ++j)
            Viz[j] = 0;
        for(int j = 1; j <= n; ++j)
            if(a[j] == b[i + j - 1])
                Viz[i + j - 1] = 1;
        for(int j = 1; j <= n; ++j)
            if(a[j] != b[i + j - 1])
                for(int k = 1; k <= n; ++k)
                    if(Viz[i + k - 1] == 0 && a[j] == b[i + k - 1]){
                        Viz[i + k - 1] = 1;
                        Ans += fabs(i - j) + 20;
                        break;
                    }
        Min = min(Min, Ans);
    }
    printf("%d", Min);
    return 0;
}