Cod sursa(job #1996642)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 2 iulie 2017 10:48:13
Problema Bilute Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.55 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("bilute.in");
ofstream g("bilute.out");
int l[30001],c[30001],n;
void rezolvare_N2()
{
    int i,j,minim=1000001,s,p=1;
    for(i=1;i<=n;i++)
    {
        s=0;
        for(j=1;j<=n;j++)
        {
            if(i!=j)
            {
                s=s+c[j]*l[j]+c[j]*abs(i-j);
            }
        }
        if(s<minim)
        {
            minim=s;
            p=i;
        }
    }
    g<<p<<" "<<minim;
}
void rezolvare_N()
{
    int i,j,minim=1000001,s,p=1;
    if(n%2==0)
    {
        for(i=n/2;i<=(n/2)+1;i++)
        {
            s=0;
            for(j=1;j<=n;j++)
            {
                if(i!=j)
                {
                    s=s+c[j]*l[j]+c[j]*abs(i-j);
                }
            }
            if(s<minim)
            {
                minim=s;
                p=i;
            }
        }
    }
    else
    {
        for(i=n/2;i<=(n/2)+2;i++)
        {
            s=0;
            for(j=1;j<=n;j++)
            {
                if(i!=j)
                {
                    s=s+c[j]*l[j]+c[j]*abs(i-j);
                }
            }
            if(s<minim)
            {
                minim=s;
                p=i;
            }
        }
    }
    g<<p<<" "<<minim;
}
int main()
{
    int i;
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>c[i]>>l[i];
    }
    if(n<=1000)
    {
        rezolvare_N2();
    }
    else
    {
        rezolvare_N();
    }
    return 0;
}