Cod sursa(job #1260801)

Utilizator diana97Diana Ghinea diana97 Data 11 noiembrie 2014 16:42:53
Problema Barman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 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();
}