Pagini recente » Cod sursa (job #3123745) | Cod sursa (job #1897320) | Cod sursa (job #834130) | Cod sursa (job #514324) | Cod sursa (job #771235)
Cod sursa(job #771235)
Program semne;
type tip=record
v,poz:longint;
end;
var a,sol:array [0..50005] of longint;
plus,minus:array [0..50005] of tip;
i,n,p,m,aux:longint;
sc,s:int64;
fi,fo:text;
begin
assign(fi,'semne.in');
assign(fo,'semne.out');
reset(fi); rewrite(fo); readln(fi,n,s); sc:=0;
for i:=1 to n do begin
read(fi,a[i]);
aux:=random(2);
if aux=0 then begin inc(m); sc:=sc-a[i]; minus[m].v:=a[i]; minus[m].poz:=i; end
else begin inc(p); sc:=sc+a[i]; plus[p].v:=a[i]; plus[p].poz:=i; end;
end;
while sc<>s do
if sc<s then begin
aux:=random(m)+1;
inc(p); plus[p]:=minus[aux];
sc:=sc+2*minus[aux].v;
minus[aux]:=minus[m]; dec(m);
end
else if sc>s then begin
aux:=random(p)+1;
inc(m); minus[m]:=plus[aux];
sc:=sc-2*plus[aux].v;
plus[aux]:=plus[p]; dec(p);
end;
for i:=1 to m do sol[minus[i].poz]:=1;
for i:=1 to n do
if sol[i]=1 then write(fo,'-') else write(fo,'+');
close(fo);
end.