Cod sursa(job #1256007)

Utilizator ErikHEErik Henning ErikHE Data 5 noiembrie 2014 18:02:20
Problema Cuburi2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
using namespace std;
//#define N 25001;
ifstream f("culori2.in");
ofstream g("culori2.out");

long a[250001], c[250001], b[250001], s[250001];
long n, m, i, j, nr=0, x, y, min1 = 1000001;

int main()
{
    f>>n>>m;
    for (i=1;i<=n;i++)
        f>>a[i];
    for (i=1;i<=n;i++)  {
        s[i] = s[i-1] + a[i];
        b[i] = b[i-1] + s[i-1];
        c[i] = c[i-1] + (i-1) * b[i];
        }
        int suma, poz;
    for (i=1;i<=m;i++)  {
        f>>x>>y;
        min1=c[y] - (x - 1) * (s[y] - s[x-1]) - c[x];
        for (j=x+1;j<=y;j++)    {
            suma = c[j] - (x-1) * (s[j] - s[x-1]) - c[x] + b[y] - (s[y] - s[j-1]) * (j-1) - b[j];
            if (min1 > suma)    {
                min1 = suma;
                poz=j;
            }
        }
        g<<poz<<"\t"<<min1<<endl;
    }




        /*Calculare TIMP POZITIE: INTERVAL 1-5, TURN 3:
        1 3 7 2 5

        2*1 + 1*3 + 1*2 + 5*2 = 17

        FORMULA: h[i] = h[i-1] + (i-j) * b[j] - b[i]
        */
    return 0;
}