Cod sursa(job #1332292)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 1 februarie 2015 21:03:56
Problema Barman Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <stdio.h>
#include <algorithm>
int a[601],b[601],c[601],n,vis[601];
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++)
        {
            vis[i]=0;
            if(c[i]==b[i]) vis[i]=1;
        }
        for(int i=1;i<=n;i++)
        {
            if(vis[i]==0)
            {
                for(int j=1;j<=n;j++)
                {
                    if(vis[j]==0&&c[j]==b[i]&&c[j]!=b[j])
                    {
                        cost+=40+2*(abs(i-j));
                        vis[i]=1;
                        vis[j]=1;
                        break;
                    }
                }
            }
        }
        v=b[1];
        if(maxim>cost) maxim=cost;
        for(int i=1;i<=n;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);
}