Cod sursa(job #1327504)

Utilizator PaueyPaula Nicoleta Gradu Pauey Data 26 ianuarie 2015 19:49:00
Problema Barman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <cmath>

#include <algorithm>
#include <iostream>
#include <fstream>
#include <vector>
#define MAXN 606
using namespace std;

int a[MAXN];
int val[MAXN];
bool used[MAXN];
int N;

void rotate() {
   int v1 = val[1];
   for(int i = 1; i < N; ++i)
      val[i] = val[i + 1];
   val[N] = v1;
}

int main()
{
    ifstream cin("barman.in");
    ofstream cout("barman.out");
    int fin = 0;
    long long cost = 1.e9;
    cin >> N;
    for(int i = 1; i <= N; ++i) {
         cin >> a[i];
         val[i] = a[i];
    }
    sort(val + 1, val + N + 1);
    for(int i = 1; i <= N; ++i) {
        long long ans = 0;
        for(int j = 1; j <= N; ++j)
            used[j] = 0;
        for(int j = 1; j <= N; ++j) {
            if(val[j] == a[j]) {
               used[j] = 1;
            }
        }
        for(int j = 1; j <= N; ++j) {
            if(val[j] == a[j]) {
               continue;
            }
            else {
               ans += 20;
               for(int k = 1; k <= N; ++k) {
                  if(!used[k] && val[k] == a[j]) {
                     used[k] = 1;
                     ans += abs(k - j);
                     break;
                  }
               }
            }
        }
        if(ans < cost) {
            cost = ans;
            fin = i;
        }
        rotate();
    }
    cout << cost << '\n';
    return 0;
}