Pagini recente » Monitorul de evaluare | Cod sursa (job #3302314) | Cod sursa (job #2061317) | Cod sursa (job #2429793) | Cod sursa (job #3302727)
// Ilie "The-Winner" Dumitru
// Dumnezeu sa o ierte
#include<bits/stdc++.h>
#define sz(x) ((int)(x).size())
#define all(x) (x).begin(), (x).end()
using ll=long long;
constexpr int NMAX=605;
constexpr ll MOD=1000000007;
ll oo=1LL<<50;
int N;
int v[NMAX], aux[NMAX];
ll calc()
{
ll ans=0;
int i;
std::map<int, std::vector<int> > A, B;
for(i=0;i<N;++i)
if(v[i]!=aux[i])
{
ans+=20;
A[v[i]].push_back(i);
B[aux[i]].push_back(i);
}
for(auto& p : A)
{
auto& v=p.second;
auto& u=B[p.first];
for(i=0;i<sz(u);++i)
ans+=std::abs(u[i]-v[i]);
}
return ans;
}
int main()
{
FILE* f=fopen("barman.in", "r"), *g=fopen("barman.out", "w");
int i;
ll ans=oo;
fscanf(f, "%d", &N);
for(i=0;i<N;++i)
{
fscanf(f, "%d", v+i);
aux[i]=v[i];
}
std::sort(aux, aux+N);
for(i=0;i<N;++i)
{
ans=std::min(ans, calc());
std::rotate(aux, aux+1, aux+N);
}
fprintf(g, "%lld\n", ans);
fclose(f);
fclose(g);
return 0;
}