Cod sursa(job #1208733)

Utilizator tudi98Cozma Tudor tudi98 Data 16 iulie 2014 14:52:09
Problema Barman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <algorithm>
using namespace std;
#define dim 605

bool used[dim],cam[dim];
int b[dim],a[dim];

int main(){

    ifstream f("barman.in");
    ofstream g("barman.out");

    int n,best=1<<30;
    f >> n;
    for(int i=1;i<=n;i++){
        f >> a[i];
        b[i]=a[i];
    }
    sort(b+1,b+1+n);

    for(int i=1;i<=n;i++){
        int Sum=0;
        for(int j=1;j<=n;j++)
            if(a[j]==b[j]) used[j]=1,cam[j]=1;
            else used[j]=0,cam[j]=0;
        for(int j=1;j<=n;j++){
            if(!used[j]){
                for(int k=1;k<=n;k++){
                    if(a[j]==b[k] && !cam[k]){
                        cam[k]=1;
                        Sum+=abs(j-k)+20;
                        break;
                    }
                }
            }
        }
        best=min(Sum,best);
        int aux=b[1];
        for(int i=1;i<n;i++)
            b[i]=b[i+1];
        b[n]=aux;
    }
    g << best << "\n";
}