Pagini recente » Cod sursa (job #695828) | Cod sursa (job #922902) | Cod sursa (job #425555) | Cod sursa (job #511933) | Cod sursa (job #250149)
Cod sursa(job #250149)
type semne=record
n:longint;
s:char;
end;
var i,n,s,ss,p:longint;
v:array [1..50000] of semne;
f,g:text;
procedure citire;
var i:integer;
begin
readln(f,n,s);
for i:=1 to n do read(f,v[i].n);
end;
procedure minus;
var i,p1,m,min:longint;
begin
min:=s-(ss-2*v[1].n);
v[1].s:='-';
if min<0 then min:=-min;
p1:=1;
for i:=2 to n do
if (p<>i) and (v[i].s='+') then
begin
m:=s-(ss-2*v[i].n);
if m<0 then m:=-m;
if min>m then
begin
min:=m;
v[i].s:='-';
v[p1].s:='+';
p1:=i;
end;
end;
p:=p1;
ss:=ss-2*v[p].n;
end;
procedure plus;
var i,m,min,p1:longint;
begin
min:=s-(ss+2*v[1].n);
v[1].s:='+';
if min<0 then min:=-min;
p1:=1;
for i:=2 to n do
if (p<>i) and (v[i].s='-') then;
begin
m:=s-(ss+2*v[i].n);
if m<0 then m:=-m;
if min>m then
begin
min:=m;
v[i].s:='+';
v[p1].s:='-';
p1:=i;
end;
end;
p:=p1;
ss:=ss+2*v[p].n;
end;
begin
assign(f,'semne.in');
assign(g,'semne.out');
reset(f);
rewrite(g);
citire;
ss:=0;
for i:=1 to n do
begin
ss:=ss+v[i].n;
v[i].s:='+';
end;
p:=0;
while ss<>s do
if ss>s then minus
else plus;
for i:=1 to n do write(g,v[i].s);
close(f);
close(g);
end.