Pagini recente » Cod sursa (job #1600818) | Cod sursa (job #2025336) | Cod sursa (job #2694736) | Cod sursa (job #392471) | Cod sursa (job #396942)
Cod sursa(job #396942)
#include<fstream>
using namespace std;
int a[100000],minn,n,i;
int getmax(int i, int j)
{
int k,mx=a[i];
for(k=i;k<=j;k++)
if(mx<a[k])
mx=a[k];
return mx;
}
int main()
{
ifstream f("secv7.in");
ofstream g("secv7.out");
f>>n;
minn=1;
for(i=1;i<=n;i++)
{
f>>a[i];
if(a[i]<a[minn])
minn=i;
}
if(minn!=1 && minn!=n)
{
if(a[1]+a[2]+getmax(3,n)<getmax(1,minn-1)+getmax(minn+1,n)+a[minn])
{
g<<a[1]+a[2]+getmax(3,n)<<'\n';
g<<"1"<<" 2";
}
else
{
if(a[n]+a[n-1]+getmax(1,n-2)<getmax(1,minn-1)+getmax(minn+1,n)+a[minn])
{
g<<a[n]+a[n-1]+getmax(1,n-2)<<'\n';
g<<n-2<<" "<<n-1;
}
else
{
g<<getmax(1,minn-1)+getmax(minn+1,n)+a[minn]<<"\n";
g<<minn-1<<" "<<minn;
}
}
}
else
{
int x,y;
if(minn==1)
{
x=1;
if(a[2]<a[n])
y=2;
else
y=n-1;
}
else
{
y=n-1;
if(a[n-1]<a[1])
x=n-2;
else
x=1;
}
g<<getmax(1,x)+getmax(x+1,y)+getmax(y+1,n)<<"\n";
g<<x<<" "<<y;
}
f.close();
g.close();
return 0;
}