Cod sursa(job #1203789)

Utilizator azkabancont-vechi azkaban Data 1 iulie 2014 12:13:36
Problema Secventa 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <fstream>
using namespace std;
ifstream cin("secv2.in");
ofstream cout("secv2.out");

long n,i,pivot(0),aux,max,sbest(-1<<19),suma(0),sol1,sol2,k,Dq[60013]; 
int main () 
{ 
  cin>>n>>k;
  for (i=1;i<=n;++i) {
                      cin>>Dq[i];
                      if (i<=k && i>1) Dq[i]+=Dq[i-1];
                     }
  suma=Dq[k];
  sbest=Dq[k];
  for (i=k+1;i<=n;++i){
                      suma+=Dq[i];
                      ++pivot;
                      if (Dq[i]>suma) suma=Dq[i] , pivot=0;
                      if (suma>sbest){
                                       sbest=suma;
                                       sol2=i;
                                       sol1=i-pivot;
                                      }
                    }
  while (sol2-sol1<k-1){
                      if (sol1>1 && sol2<n){
                                            if (Dq[sol1-1]<Dq[sol2+1]) sbest+=Dq[--sol1];
                                                                  else sbest+=Dq[++sol2];
                                           }
                                     else 
                       if (sol1>1 && sol2==n) sbest+=Dq[--sol1];      
                                      else 
                       if (sol1==1 && sol2<n) sbest+=Dq[++sol2];
                      }
                      
  cout<<sol1<<" "<<sol2<<" "<<sbest;
return 0;
}