Pagini recente » Cod sursa (job #583931) | Cod sursa (job #2598839) | Cod sursa (job #2967551) | Cod sursa (job #4567) | Cod sursa (job #2724966)
#include <iostream>
#include <vector>
#include <algorithm>
#include <bitset>
auto *in = fopen("barman.in", "r"), *out = fopen("barman.out", "w") ;
const int maxn = 600 ;
const int INF = 2e9 ;
int main() {
int n, i, j, rep ;
fscanf(in, "%d", &n) ;
std::vector<int> init(n), sorted(n) ;
std::bitset<1 + maxn> seen, check ;
for (i = 0 ; i < n ; ++ i) {
fscanf(in, "%d ", &init[i]) ;
sorted[i] = init[i] ;
}
std::sort(begin(sorted), end(sorted)) ;
int ans(INF) ;
for (rep = 0 ; rep < n ; ++ rep) {
int currAns(0) ;
for (i = 0 ; i < n ; ++ i) {
seen[i] = (init[i] == sorted[i]) ;
check[i] = seen[i] ;
}
for (i = 0 ; i < n ; ++ i) {
if (!seen[i]) {
for (j = 0 ; j < n ; ++ j) {
if (init[i] == sorted[j] && !check[j]) {
check[j] = true ;
currAns += abs(i - j) + 20 ;
break;
}
}
}
}
/// std::cerr << rep << ' ' << currAns << '\n' ;
ans = std::min(ans, currAns) ;
sorted.push_back(sorted[0]) ;
sorted.erase(sorted.begin()) ;
}
fprintf(out, "%d", ans) ;
}