Cod sursa(job #1334038)

Utilizator LegionHagiu Stefan Legion Data 3 februarie 2015 20:34:06
Problema Cuburi2 Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
using namespace std;
ofstream out("cuburi2.out");
int numere[250001];
void rez(int x,int y)
{
    int bun,acum=(x+y/2),pret=10000000,stanga,dreapta,i;
    int a=x,b=y;
    while (a<=b)
    {
        stanga=0;
        dreapta=0;
        for (i=x;i<acum;i++)
        {
            stanga+=(acum-i)*numere[i];
        }
        for (i=y;i>acum;i--)
        {
            dreapta+=(i-acum)*numere[i];
        }
        if (stanga+dreapta<pret)
        {
             pret=stanga+dreapta;
             bun=acum;
        }
        if (stanga>dreapta)
        {
            b=acum-1;
            acum=(a+b)/2;
        }
        else
        {
            a=acum+1;
            acum=(a+b)/2;
        }
    }
    out<<bun<<" "<<pret<<"\n";
}
int main()
{
    ifstream in("cuburi2.in");
    int i,n,m,x,y;
    in>>n;
    in>>m;
    for (i=1;i<=n;i++)
    {
        in>>numere[i];
    }
    for (i=1;i<=m;i++)
    {
        in>>x;
        in>>y;
        rez(x,y);
    }
    return 0;
}