Cod sursa(job #431694)

Utilizator dicu_dariaDaria Dicu dicu_daria Data 1 aprilie 2010 12:18:04
Problema Secv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <fstream>

using namespace std;
int maxx,smin,maxim,i1,i2,a[30000],i,n,pmax;
int main()
{
    ifstream fi("secv7.in");
    ofstream fo("secv7.out");
    fi>>n;
    fi>>maxim;
    a[1]=maxim;
    pmax=1;
    for(i=2;i<=n;i++)
    {
      fi>>a[i];
      if(maxim<=a[i]) { maxim=a[i]; pmax=i; }
    }
    smin=int(2e9);
    //cazul 1
    maxx=a[n];
    if(pmax<=n-2)
    {
    for(i=n;i>pmax+1;i--)
    {
        if(a[i]>maxx) maxx=a[i];
        if(a[i-1]+maxx+maxim<smin) { i1=i-2; i2=i-1;
                                     smin=a[i-1]+maxx+maxim;
                                   }
    }
    }
    //cazul 2
    if((a[1]+a[pmax]+a[n]<smin)&&(pmax!=n)&&(pmax!=1)) {
                                                         i1=1; i2=n-1;
                                                         smin=a[1]+a[maxx]+a[n];
                                                       }
    //cazul 3
    maxx=a[1];
    if(pmax>=3)
    {
    for(i=1;i<pmax-1;i++)
    {
        if(a[i]>maxx) maxx=a[i];
        if(a[i+1]+maxx+maxim<smin) {
                                      i1=i; i2=i+1;
                                      smin=a[i+1]+maxx+maxim;
                                   }
    }
    }
    //if(n==3) {smin=a[1]+a[2]+a[3]; i1=1; i2=2; }
    fo<<smin<<"\n"<<i1<<" "<<i2<<"\n";
    fo.close();


    return 0;
}