Cod sursa(job #1873821)

Utilizator sucureiSucureiRobert sucurei Data 9 februarie 2017 14:06:03
Problema Bilute Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<fstream>
#define NMax 30005
using namespace std;
ifstream fin("bilute.in");
ofstream fout("bilute.out");

int N;
int C[NMax],L[NMax],S[NMax];
long long Sol1,Sol2,cost;

void Read()
{
    fin>>N;

    for(int i = 1 ; i <= N ; ++i)
        fin>>C[i]>>L[i];
}

void Solve()
{
    S[1] = C[1];
    Sol1 = 1;

    for(int i = 2 ; i <= N ; ++i)
    {
        S[i] = S[i-1] + C[i];
        cost += C[i] * L[i] + C[i] * (i - 1);
    }

    Sol2 = cost;

    for(int i = 2 ; i <= N ; ++i)
    {
        cost += C[i-1] * L[i-1] - C[i] * L[i] + 2 * S[i-1] - S[N];

        if(cost < Sol2)
        {
            Sol1 = i;
            Sol2 = cost;
        }
    }
}

void Print()
{
    fout<<Sol1<<" "<<Sol2<<"\n";
}

int main()
{
    Read();
    Solve();
    Print();

    fin.close();
    fout.close();
    return 0;
}