Pagini recente » Cod sursa (job #1518742) | Cod sursa (job #588824) | Cod sursa (job #2720371) | Cod sursa (job #1611835) | Cod sursa (job #2127085)
Program secv3;
type mp = 0..1000000;
long =-1000000000000000..1000000000000000;
tab =array[mp] of long;
var p1,p2,n,i:mp;
a: tab;
f,g:text;
function max(a,b:long):long;
begin
if a>b then
max:=a
else
max:=b;
end;
function min(a,b:long):long;
begin
if a<b then
min:=a
else
min:=b;
end;
function dif(a,b,c:long):long;
begin
dif:=max(a,max(b-a,c-b)) - min(a,min(b-a,c-b));
end;
Procedure par(var p1f,p2f:mp;n:mp;a:tab);
var d,d1,d2:long;
p1,p2:mp;
begin
p2:=1;
p1:=1;
for p1:=1 to n-2 do begin
if p2<=p1 then
p2:=p1+1;
while ((a[p2]-a[p1]) < a[p1]) and (p2 < n) do
p2:=p2+1;
//p2:=p2-1;
d1:=dif(a[p1],a[p2],a[n]);
if (d1 < d) then begin
d:=d1;
p1f:=p1;
p2f:=p2;
end;
if p2-1<>p1 then begin
d2:=dif(a[p1],a[p2-1],a[n]);
if (d2 < d) then begin
d:=d2;
p1f:=p1;
p2:=p2-1;
p2f:=p2;
end;
end;
end;
end;
begin
assign(f,'3secv.in');
assign(g,'3secv.out');
reset(f);
rewrite(g);
readln(f,n);
for i:=1 to n do begin
read(f,a[i]);
if i>1 then
a[i]:=a[i-1]+a[i];
end;
par(p1,p2,n,a);
writeln(g,p1,' ',p2);
close(f);
close(g);
end.