Pagini recente » Cod sursa (job #2345709) | Cod sursa (job #2349101) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #3332280)
#include <fstream>
#include <algorithm>
#include <cmath>
#include <unordered_map>
#include <vector>
using namespace std;
ifstream f("barman.in");
ofstream g("barman.out");
int a[605], s[605];
unordered_map<int, vector<int>> mp;
int main()
{
int n, ans = 2e9;
f >> n;
for(int i = 0; i < n; i++)
{
f >> a[i];
s[i] = a[i];
if(!mp[a[i]].size())
mp[a[i]].push_back(1);
mp[a[i]].push_back(i);
}
sort(s, s + n);
for(int i = 0; i < n; i++)
{
int partans = 0;
for(int j = 0; j < n; j++)
{
int x = s[(i + j) % n];
if(x == a[j]) continue;
while(a[mp[x][mp[x][0]]] == s[(mp[x][mp[x][0]] + i) % n])
mp[x][0]++;
partans += 20 + abs(mp[x][mp[x][0]] - j);
mp[x][0]++;
}
ans = min(ans, partans);
for(auto& j : mp)
j.second[0] = 1;
}
g << ans;
return 0;
}