Cod sursa(job #447414)

Utilizator wamfeverDobos Ionut wamfever Data 28 aprilie 2010 17:31:48
Problema Bilute Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<cstdio>
using namespace std;
int main(void)
{
    freopen("bilute.in","r",stdin);
    freopen("bilute.out","w",stdout);
    long long n, c[30001], l[30001], i;
    long long cost=0;
    scanf("%d",&n);
    long long bile[30001], poz, minim;bile[0]=0;
    for(i=1; i<=n; ++ i)
    {
             scanf("%d%d",&c[i],&l[i]);
             cost+=c[i]*l[i];
             bile[i] = bile[i-1] + l[i];
    }
    long long left[30001];
    left[1]=0;
    for(i=2; i<=n; ++ i) left[i] = left[i-1] + bile[i-1];
    long long right[30001];
    right[n]=0;
    for(i=n-1; i>=1; -- i) right[i] = right[i+1] + bile[n] - bile[i+1];
    for(i=1; i<=n; ++ i) if(cost - l[i] * c[i] + left[i] + right[i] < minim) minim = cost - l[i] * c[i] + left[i] + right[i], poz=i;
    printf("%d %d",poz,minim);
    return 0;
}