Cod sursa(job #2724963)

Utilizator rares404AlShaytan - Balasescu Rares rares404 Data 18 martie 2021 10:27:08
Problema Barman Scor 0
Compilator cpp-64 Status done
Runda simularesimulare Marime 1.23 kb
#include <iostream>
#include <vector>
#include <algorithm>

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) ;
}