Cod sursa(job #1294701)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 18 decembrie 2014 00:00:15
Problema Barman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <algorithm>
#define DIM 605
#define INF 1000000000
#define infile "barman.in"
#define outfile "barman.out"

using namespace std;

ifstream f(infile);
ofstream g(outfile);

int n;

int v[DIM], w[DIM];

bool ok[DIM];

inline int modul(const int &a) {
	return (a > 0 ? a : -a);
}

int main() {
	f >> n;
	for (int i = 1; i <= n; ++i) {
		f >> v[i];
		w[i] = v[i];
	}
	std::sort(w + 1, w + n + 1);
	int SOL = INF;
	for (int step = 1; step <= n; ++step) {
		for (int i = 1; i <= n; ++i)
			if (v[i] == w[i])
				ok[i] = true;
			else
				ok[i] = false;
		int tmp = 0;
		for (int i = 1; i <= n; ++i) {
			if (v[i] == w[i])
				continue;
			for (int j = 1; j <= n; ++j) {
				if (!ok[j] && v[i] == w[j]) {
					ok[j] = true;
					tmp += 20 + modul(i - j);
					break;
				}
			}
		}
		SOL = std::min(SOL, tmp);
		tmp = w[1];
		for (int i = 1; i < n; ++i)
			w[i] = w[i + 1];
		w[n] = tmp;
	}
	g << SOL;
	return 0;
}

//Trust me, I'm the Doctor!