Cod sursa(job #1332274)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 1 februarie 2015 20:55:11
Problema Barman Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <stdio.h>
#include <algorithm>
int a[601],b[601],c[601],n;
int abs(int a)
{
    if(a<0) return -a;
    return a;
}
int main()
{
    freopen ("barman.in","r",stdin);
    freopen ("barman.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        b[i]=a[i];
        c[i]=a[i];
    }
    std::sort(b+1,b+n+1);
    int v,maxim=900000000,cost,temp;
    for(int x=1;x<=n;x++)
    {
        cost=0;
        for(int i=1;i<=n;i++)
        {
            if(c[i]!=b[i])
            {
                for(int j=1;j<=n;j++)
                {
                    if(b[i]==c[j]&&b[j]!=c[j])
                    {
                        cost+=40+2*(abs(i-j));
                        temp=c[i];
                        c[i]=c[j];
                        c[j]=temp;
                        break;
                    }
                }
            }
        }
        v=b[1];
        c[1]=a[1];
        if(maxim>cost) maxim=cost;
        for(int i=1;i<=n;i++)
        {
            c[i]=a[i];
            b[i]=b[i+1];
        }
        b[n]=v;
        //for(int i=1;i<=n;i++) printf("%d ",b[i]);
        //printf("\n");
    }
    printf("%d\n",maxim);
}