Pagini recente » Cod sursa (job #1279586) | Cod sursa (job #3174747) | Cod sursa (job #702605) | Cod sursa (job #2917059) | Cod sursa (job #187955)
Cod sursa(job #187955)
program secv;
var v:array[1..30000] of integer; {!!! de vazut restrictiile}
n,i,aux,j,k,s,x: longint;
f,g: text;
begin
assign(f,'secv.in'); reset(f);
assign(g,'secv.out'); rewrite(g);
read(f,n);
for i:=1 to n do begin
read(f,x);
v[i]:=x;
end;
aux:=v[1];
for i:=1 to n do {gasesc minimul din secventa}
if v[i]<aux then begin
aux:=v[i];
j:=i;
end; {retin pozitia minimului}
i:=j;
{1} if j=1 then {minimul pe prima pozitie}
if v[2]<v[n] then begin
k:=2;
aux:=k+1;
for i:=k+1 to n do
if v[i]>aux then aux:=v[i];
s:=v[j]+v[k]+aux;
writeln(g,s);
write(g,j,' ',k);
end
else begin
k:=n;
aux:=j+1;
for i:=j+1 to k-1 do
if v[j]>aux then aux:=v[i];
s:=v[j]+v[k]+aux;
writeln(g,s);
write(g,j,' ',k-1);
end;
{2} if j=n then {minimul pe ultima pozitie}
if v[1]<v[n-1] then begin
k:=1;
aux:=v[k+1];
for i:=k+1 to j-1 do
if v[i]>aux then aux:=v[i];
s:=v[j]+v[k]+aux;
writeln(g,s);
write(g,k,' ',j-1);
end
else begin
k:=n-1;
aux:=v[1];
for i:=1 to k-1 do
if v[i]>aux then aux:=v[i];
s:=v[j]+v[k]+aux;
writeln(g,s);
write(g,k-1,' ',k);
end;
{3} if (j<>1) and (j<n) then begin {minimul in interiorul secventei}
k:=j+1;
aux:=v[1];
for i:=1 to j do
if v[i]>aux then aux:=v[i];
s:=v[j]+aux;
aux:=v[k];
for i :=k to n do
if v[i]>aux then aux:=v[i];
s:=s+aux;
writeln(g,s);
write(g,j-1,' ',k-1);
end;
close(f); close(g);
end.