Cod sursa(job #782906)

Utilizator repp4raduRadu-Andrei Szasz repp4radu Data 30 august 2012 15:50:36
Problema Barman Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <algorithm>
#include <cstring>

#define MAX 1024
#define INF 0x3f3f3f3f

using namespace std;

int v[MAX], aux[MAX], perm[MAX], n, minim = INF;
bool taken[MAX];

int solve()
{
    int time = 0;
    for(int i = 0; i < n; i++)
    {
        if(v[i] == perm[i]) continue;
        for(int j = 0; j < n; j++)
        {
            if(!taken[j] && perm[i] == v[j])
            {
                taken[j] = true;
                time += 20 + abs(i - j);
            }
        }
    }
    return time;
}

int main()
{
    ifstream in("barman.in");
    in>>n;
    for(int i = 0; i < n; i++)
    {
        in>>v[i]; aux[i] = v[i];
    }in.close();
    sort(aux, aux + n);
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
            perm[j] = aux[(i + j) % n];
        memset(taken, 0, MAX * sizeof(bool));
        minim = min(minim, solve());
    }
    ofstream out("barman.out"); out<<minim; out.close();
    return 0;
}