Cod sursa(job #254601)

Utilizator allynaAlina S allyna Data 7 februarie 2009 13:11:07
Problema Cuburi2 Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 1.92 kb
#include<fstream.h>
#include<iostream.h>
int n,m,a[1000000],i,j,i1[1000000],i2[1000000],max,mij,l,j1,j2,d[1000000],inc,sf;
long long min=999999999;
int pozmin;

int suma( int inceput, int sfarsit)
{
    int s=0,q;
    for(q=inceput;q<=sfarsit;q++)
                                 s=s+a[q];
    return s;
}

int sumas(int inceput, int sfarsit)
{
    int q,s=0;
    for(q=inceput+1;q<=sfarsit;q++)
                                   s=s+(a[q]*(q-inceput));
    return s;
}

int main()
{
    ifstream in("cuburi2.in");
    ofstream out("cuburi2.out");
    in>>n>>m;
    for(i=1;i<=n;i++)
                     in>>a[i];
    for(i=1;i<=m;i++)
                     in>>i1[i]>>i2[i];
    in.close();
    for(l=1;l<=m;l++)
    {
                     inc=i1[l];
                     sf=i2[l];
                     d[inc]=sumas(inc,sf);
                     if(d[i]<min)
                              {
                                min=d[inc];
                                pozmin=inc;
                                }
                     for(i=inc+1;i<=sf;i++)
                                          {
                                           d[i]=d[i-1]-suma(i+1,sf)+suma(inc,i-1)-a[i];
                                           if(d[i]<min)
                                                  {
                                                  min=d[i];
                                                  pozmin=i;
                                                  }
                                                                                 }
                                 
  
  
   out<<pozmin<<" "<<min<<endl;
    
                     
    }
                                                                                       
    
    return 0;
}