Cod sursa(job #254574)

Utilizator GavrilaVladGavrila Vlad GavrilaVlad Data 7 februarie 2009 13:01:51
Problema Cuburi2 Scor 50
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 0.86 kb
#include <stdio.h>

using namespace std;

long n, i, j, k, m, v[250010], s[250010], st, dr, poz;
long long cst, cdr, mi;

int main()
{
    freopen("cuburi2.in", "r", stdin);
    freopen("cuburi2.out", "w", stdout);
    scanf("%d %d\n", &n, &m);
    for(i=1; i<=n; i++)
    {
        scanf("%d ", &v[i]);
        s[i]=s[i-1]+v[i];
    }
    for(i=1; i<=m; i++)
    {
        scanf("%d %d", &st, &dr);
        cdr=0;
        cst=0;
        for(j=st; j<=dr; j++)
        {
             cdr+=(s[dr]-s[j]);
        }
        mi=cdr;
        poz=st;
        for(j=st+1; j<=dr; j++)
        {
            cst+=(s[j-1]-s[st-1]);
            cdr-=(s[dr]-s[j-1]);
            if(cdr+cst<mi)
            {
                mi=cdr+cst;
                poz=j;
            }
        }
        printf("%d %lld\n", poz, mi);
    }
    return 0;
}