Cod sursa(job #1277327)

Utilizator lokixdSebastian lokixd Data 27 noiembrie 2014 15:55:34
Problema Barman Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <iostream>
#include <fstream>
#include <algorithm>
 
using namespace std;
 
ifstream f ("barman.in");
ofstream g ("barman.out");
 
const int NMAX = 600 + 1;
const int INF = 1 << 30;
 
int n, cost = 10;
int v[NMAX], sorted[NMAX];
bool same[NMAX];
 
void citeste() {
    f >> n;
    for (int i = 1; i <= n; i++) {
        f >> v[i];
        sorted[i] = v[i];
    }
}
 
void rezolva() {
    int sol = INF, aux;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++)
            same[j] = (v[j] == sorted[j]);
        aux = 0;
        for (int j = 1; j <= n; j++) {
            if (v[j] != sorted[j]) {
                for (int k = 1; k <= n; k++)
                    if(v[j] == sorted[k] && same[k] == false) {
                        aux += cost * 2 + abs(j - k);
                        same[k] = true;
                        break;
                    }
            }
        }
        if (sol > aux) sol = aux;
        aux = sorted[1];
        for (int j = 1; j < n; j++) sorted[j] = sorted[j + 1];
        sorted[n] = aux;
    }
    g << sol;
}
 
int main() {
    citeste();
    sort (sorted + 1, sorted + n + 1);
    rezolva();
}