Pagini recente » Cod sursa (job #1911808) | Cod sursa (job #1876034) | Diferente pentru problema/simetrii intre reviziile 8 si 7 | Cod sursa (job #1092323) | Cod sursa (job #1391441)
program siruri;
var v:array[1..1000001] of char;
nr:array[1..100001] of longint;
used:array[1..100001] of 0..1;
n,p:longint;
procedure citire;
var i:longint;
f:text;
begin
assign(f,'siruri.in'); reset(f);
readln(f,p);
readln(f,n);
for i:=1 to n do
read(f,v[i]);
close(f);
end;
procedure scrie(x:longint);
var g:text;
begin
assign(g,'siruri.out'); rewrite(g);
writeln(g,x);
close(g);
end;
procedure sol1;
var i,j,nrs,st,sf,prec:longint;
max,val,min:char;
begin
nr[n]:=1;
max:=v[n];
for i:=n-1 downto 1 do begin
if v[i]>max then begin
max:=v[i];
nr[i]:=1;
end
else begin
val:='{';
for j:=i+1 to n do
if (v[i]<=v[j]) and (v[j]<=val) then begin
val:=v[j];
nr[i]:=(nr[i]+nr[j]) mod 41357;
end
end
end;
nrs:=nr[1]; min:='{';
for i:=2 to n do
if min>v[i] then begin
min:=v[i];
nrs:=(nrs+nr[i]) mod 41357;
end;
scrie(nrs);
end;
procedure sol2;
var i,j,st,nrp:longint;
begin
nrp:=0;
for i:=1 to n-1 do
if used[i]=0 then begin
used[i]:=1;
st:=i;
write(v[i],' ');
for j:=i+1 to n do
if (v[st]<=v[j])and(used[j]=0) then begin
st:=j;
used[j]:=1;
write(v[j],' ');
end;
writeln;
nrp:=nrp+1;
end;
scrie(nrp);
end;
begin
citire;
if p=1 then
sol1
else
sol2;
end.