Cod sursa(job #1325075)

Utilizator RazvanBawsRazvan Radoi RazvanBaws Data 23 ianuarie 2015 11:04:41
Problema Bilute Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>

#define fin  "bilute.in"
#define fout "bilute.out"

const long long MAX  = 2001010100000000LL;
const int Nmax = 30100;

int N,a[Nmax],b[Nmax],cul;
long long smin = MAX;
long long s1,s2,sumL,sel,sel2;

int main()
{
    int i;

    freopen(fin,"r",stdin);
    freopen(fout,"w",stdout);

    scanf("%d",&N);

    for (i=1;i<=N;++i)
    {
        scanf("%d%d",&a[i],&b[i]);
        sumL+=a[i]*b[i];

        s2   = s2 + a[i] * i;
        sel += a[i];
    }

    for ( i = 1 ; i <= N ; ++i )
    {
        s2 -= sel;
        sel-=a[i];

        sel2+=a[i-1];
        s1 = s1 + sel2;

        if ( s1 + s2 + sumL - a[i] * b[i] < smin )
        {
            smin = s1 + s2 + sumL - a[i] * b[i];
            cul = i;
        }

//      printf("%d %d\n",s1,s2);

    }

    printf("%d %lld\n",cul,smin);

    return 0;
}