Cod sursa(job #254595)

Utilizator ErgoVicol Sergiu Constantin Ergo Data 7 februarie 2009 13:09:28
Problema Cuburi2 Scor 20
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 1.03 kb
#include <fstream>

using namespace std;

ifstream fin("cuburi2.in");
ofstream fout("cuburi2.out");
#define NMAX 5000
struct  numb
{
        unsigned long long b,f;
};
long long A[NMAX],n,m,x,y,minh,pmin;
numb B[NMAX],C[NMAX];

int main()
{
        int i,j,z;
        fin>>n>>m;
        B[0].f=B[n+1].f=0;
        for (i=1;i<=n;i++)
        {
                fin>>A[i];
                B[i].f=B[i-1].f+A[i];
                C[i].f=C[i-1].f+B[i-1].f;
        }
        for (i=n;i>=1;i--)
        {
                B[i].b=B[i+1].b+A[i];
                C[i].b=C[i+1].b+B[i+1].b;
        }
        for (i=1;i<=m;i++)
        {
                fin>>x>>y;
                minh=C[y].f-C[x].f-B[x-1].f*(y-x);
                pmin=y;
                for (j=x;j<=y;j++)
                {
                        z=(C[j].f-C[x].f-B[x-1].f*(j-x))+(C[j].b-C[y].b-B[y+1].b*(y-j));
                        if (z<minh) minh=z, pmin=j;
                }
                fout<<pmin<<' '<<minh<<'\n';

                
        }
        fout.close();
        return 0;
}