Cod sursa(job #1500164)

Utilizator addy01adrian dumitrache addy01 Data 11 octombrie 2015 16:15:10
Problema Cuburi2 Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <cstring>
#define INF 1<<30
#define NMAX 250010
using namespace std;
ifstream in("cuburi2.in");
ofstream out("cuburi2.out");

int N,M;
int V[NMAX];
int best[NMAX];
int S[NMAX];

int abs(int x){
    if(x>0)
        return x;
    return -x;
}

int main()
{
    in>>N>>M;
    int i,x,y;
    //S[i]=suma numerele de la v[1] pana la v[i]
    
    S[0]=0;
    for(i=1;i<=N;i++)
    {
        in>>V[i];
        S[i]=S[i-1]+V[i];
    }
    
    while(M--){
        in>>x>>y;
        best[x]=0;
        for(i=x;i<=y;i++)
            best[x]+=( V[i] * abs( x-i ) );

        for(i=x+1;i<=y;i++){
            best[i] = best[i-1] - ( S[y] - S[i-1] ) + ( S[i-1] - S[x-1] );
        }

        int min=INF,poz;
        for(i=x;i<=y;i++)
            if(best[i]<=min)
            {
                min=best[i];
                poz=i;
            }
            
        out<<poz<<" "<<min<<"\n";

    }
return 0;
}