Cod sursa(job #120015)

Utilizator cupacatenumaratecupacatenumarate cupacatenumarate Data 3 ianuarie 2008 22:32:31
Problema Bilute Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <stdio.h>
#define NMAX 30030

int N;
long long L[NMAX], C[NMAX], Cs[NMAX], M[NMAX], S[NMAX], Ls;

void read()
{
        int i;

        freopen("bilute.in", "r", stdin);
        scanf("%d", &N);
        for (i = 1; i <= N; i++) scanf("%lld%lld", C+i, L+i);
}

void solve()
{
        int i;
	long long cs1, cs2, m1, m2;

        for (i = 1; i <= N; i++) Ls += (L[i]*C[i]);

        for (i = 1; i <= N; i++) Cs[i] = Cs[i-1]+C[i];
        for (i = 1; i <= N; i++) M[i] = M[i-1]+i*C[i];

        for (i = 1; i <= N; i++)
        {
                cs1 = Cs[i-1]; cs2 = Cs[N]-Cs[i];
                m1 = M[i-1]; m2 = M[N]-M[i];
                S[i] = Ls-C[i]*L[i]+i*cs1-i*cs2-m1+m2;
        }
}

void write()
{
        int i, j=1;
        freopen("bilute.out", "w", stdout);
        S[0] = S[1];
        for (i = 1; i <= N; i++)
            if (S[i]<S[0]) S[0] = S[i], j = i;
        printf("%d %lld\n", j, S[0]);
}

int main()
{
        read();
        solve();
        write();
        return 0;
}