Cod sursa(job #447418)

Utilizator wamfeverDobos Ionut wamfever Data 28 aprilie 2010 17:40:49
Problema Bilute Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream>
using namespace std;
int main(void)
{
    ifstream fin("bilute.in");
    ofstream fout("bilute.out");
    long long n, c[30001], l[30001], i;
    long long cost=0;
    fin>>n;
    long long bile[30001], poz, minim;bile[0]=0;
    for(i=1; i<=n; ++ i)
    {
             fin>>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;
    minim = cost;
    for(i=n-1; i>=1; -- i) right[i] = right[i+1] + bile[n] - bile[i];
    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;
    fout<<poz<<" "<<minim<<"\n";
    fin.close();
    fout.close();
    
    return 0;
}