Cod sursa(job #1717187)

Utilizator Athena99Anghel Anca Athena99 Data 14 iunie 2016 15:07:45
Problema Barman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <algorithm>
#include <fstream>

using namespace std;

ifstream fin("barman.in");
ofstream fout("barman.out");

const int inf= 1<<30;
const int nmax= 600;

bool u[nmax+1];
int v[nmax+1], vs[nmax+2];

int main(  ) {
    int n, sol= inf;
    fin>>n;
    for ( int i= 1; i<=n; ++i ) {
        fin>>v[i];
        vs[i]= v[i];
    }

    sort( vs+1, vs+n+1 );
    for ( int p= 1; p<=n; ++p ) {
        int aux= 0;
        vs[n+1]= vs[1];
        for ( int i= 1; i<=n; ++i ) {
            vs[i]= vs[i+1];
            u[i]= 0;
            if ( v[i]==vs[i] ) {
                u[i]= 1;
            }
        }

        for ( int i= 1; i<=n; ++i ) {
            for ( int j= 1; j<=n && v[i]!=vs[i]; ++j ) {
                if ( u[j]==0 && v[i]==vs[j] ) {
                    u[j]= 1;
                    aux= aux+max(i-j, j-i)+20;
                    break;
                }
            }
        }

        sol= min(sol, aux);
    }

    fout<<sol<<"\n";

    return 0;
}