Cod sursa(job #1932452)

Utilizator Andrei501Clicinschi Andrei Andrei501 Data 19 martie 2017 19:47:50
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <cstdio>

using namespace std;

int t[100001];
int Min=2000000000;
int cost1[100001],cost2[100001];

int main()
{
    freopen ("blaturi.in","r",stdin);
    freopen ("blaturi.out","w",stdout);

    int n;
    scanf ("%d",&n);

    int i;
    for (i=1; i<=n; i++)
    {
        scanf ("%d",&t[i]);
    }

    int P1,S1,P2,S2;
    scanf ("%d %d",&P1,&S1);
    scanf ("%d %d",&P2,&S2);

    int blat1,blat2,j,dif;

    cost1[0]=0;
    cost2[n+1]=0;
    for (i=1; i<=n; i++)
    {
        cost1[i]=cost1[i-1]+P1*t[i];
        cost2[n-i+1]=cost2[n-i+2]+P2*t[n-i+1];
    }

    int cost=0;

    for (i=0; i<=n; i++)
    {
        cost=0;
        blat1=i;
        blat2=n-i;
        if (blat1>blat2)
        {
            dif=blat1-blat2-1;
            cost+=S1*dif;
        }
        if (blat2>blat1)
        {
            dif=blat2-blat1-1;
            cost+=S2*dif;
        }
        cost+=cost1[i]+cost2[i+1];
        if (cost<Min)
        {
            Min=cost;
        }
    }

    printf ("%d\n",Min);

    return 0;
}