Cod sursa(job #1334044)

Utilizator LegionHagiu Stefan Legion Data 3 februarie 2015 20:41:20
Problema Cuburi2 Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>
using namespace std;
ofstream out("cuburi2.out");
int numere[250001];
void rez(int x,int y)
{
    long long bun,acum=(x+y/2),pret=99999999999,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=1LL*(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;
}