Cod sursa(job #2844843)

Utilizator Botnaru_VictorBotnaru Victor Botnaru_Victor Data 5 februarie 2022 18:10:00
Problema Barman Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>
#define nmax 601
using namespace std;

ifstream f("barman.in");
ofstream g("barman.out");

int v[nmax],sp[nmax],sv[nmax];
int n;
bool cmp(const int &a, const int &b)
{
    return (v[a]<v[b])||(v[a]==v[b]&&a<b);
}

int main()
{
    f>>n;
    for(int i=0;i<n;i++)
    {
        f>>v[i];
        sv[i]=v[i];
        sp[i]=i;
    }
    sort(sv,sv+n);
    sort(sp,sp+n,cmp);
    //for(int i=0;i<n;i++) g<<sp[i]<<','<<sv[i]<<' ';
    //g<<'\n';
    int mn=INT_MAX;
    for(int i=0;i<n;i++)
    {
        int ans=0;
        for(int j=0;j<n;j++)
        {
            if(sp[(i+j)%n]-j>0)ans+=sp[(i+j)%n]-j;
            else ans-=sp[(i+j)%n]-j;
            if(v[j]!=sv[(j+i)%n]) ans+=20;
            //g<<ans<<' '<<sp[j]<<' '<<(j+i)%n<<' '<<sv[(j+i)%n]<<';'<<'\n';
        }
        //g<<ans<<'\n';
        mn=min(mn,ans);
    }
    g<<mn;
    return 0;
}