Pagini recente » Cod sursa (job #2453230) | Cod sursa (job #1049786) | Cod sursa (job #1493262) | Cod sursa (job #2740451) | Cod sursa (job #254629)
Cod sursa(job #254629)
program cuburi;
var f,g:text;
x,y,po,n,m,i,j,max:longint;
v:array[1..5000] of longint;
nr,va:int64;
begin
assign(f,'cuburi2.in');
assign(g,'cuburi2.out');
reset(f);
rewrite(g);
read(f,n,m);readln(f);
for i:=1 to n do
read(f,v[i]);
for i:=1 to m do
begin
readln(f);
read(f,x,y);
max:=v[x];nr:=0;po:=x;va:=0;
for j:=x+1 to y do
if v[j]>max then begin max:=v[j]; po:=j; nr:=nr*2+v[j-1]; va:=nr;end
else if (v[j]=max) and (abs( ((y-x+1) div 2)+((y-x+1)mod 2) -j)<abs(((y-x+1) div 2)+((y-x+1)mod 2)-po)) then
begin po:=j; nr:=nr*2+v[j-1]; va:=nr;end
else nr:=nr*2+v[j-1];
if y-po<200 then begin nr:=0;
for j:=y-1 downto po do
nr:=nr*2+v[j+1];
if (y-x=2) and (v[x]+v[y]<=nr+va) then writeln(g,x+1,' ',v[x]+v[y]) else
writeln(g,po,' ',nr+va); end else write(g,po,' ',nr-va);
end;
close(f);
close(g);
end.