Cod sursa(job #1327145)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 26 ianuarie 2015 13:49:15
Problema Barman Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int nr[605],v[605],po[605];
bool be[605],b2[605];
int main()
{
    freopen("barman.in","r",stdin);
    freopen("barman.out","w",stdout);
    int n,i,j,q,sc,cu,dim,poz;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
    scanf("%d",&v[i]);
    nr[i]=v[i];
    }
    sort(nr+1,nr+n+1);
    sc=128000000;
    for(q=0;q<=n;q++)
    {
        cu=0;
        for(i=1;i<=n;i++)
        if(v[i]==nr[i])
        be[i]=b2[i]=1;
        else
        {
        be[i]=b2[i]=0;
        cu=cu+20;
        }
        for(i=1;i<=n;i++)
        if(be[i]==0)
        {
            dim=n;
            poz=0;
            for(j=1;j<=n;j++)
            if(v[i]==nr[j] && b2[j]==0)
            {
                if(j-i<dim && j-i>=0)
                {
                    dim=j-i;
                    poz=j;
                }
                if(i-j<dim && i-j>=0)
                {
                    dim=i-j;
                    poz=j;
                }
            }
        cu=cu+dim;
        b2[poz]=1;
        }
        if(cu<sc)
        sc=cu;
        nr[0]=nr[n];
        for(j=n;j>=1;j--)
        nr[j]=nr[j-1];
 /*       printf("%d\n",sc);
        for(j=1;j<=n;j++)
        printf("%d ",nr[j]);
        printf("\n");
          for(j=1;j<=n;j++)
        printf("%d ",v[j]);
        printf("\n");
        printf("\n");*/
    }
    printf("%d\n",sc);
    return 0;
}