Var input,output:text; n,i,j,g,nm,ans,t:integer;ara:array[0..1000] of integer;ar,arq:array[0..1000] of integer; ts,sum,a:integer;beginassign(input,'f.in');reset(input); assign(output,'f.out');rewrite(output);readln(input,a,n);ans:=10000; for i:=1 to n do beginread(input,ar[i]);ts:=ts+2*ar[i];end; if ts<a then writeln(output,'-1') else begin
ara[1]:=3;for i:=2 to 15 do begin ara[i]:=3*ara[i-1];end; for i:=1 to ara[n] do begin if arq[n]<2 then begin inc(arq[n]);sum:=sum+ar[n];inc(nm); end else begin g:=n;while arq[g]>1 do begin sum:=sum-ar[g]*arq[g];dec(nm,arq[g]);arq[g]:=0;dec(g);end; inc(arq[g]);sum:=sum+ar[g];inc(nm);end;if sum=a then begin if nm<ans then ans:=nm;end;end; if ans>1000 then writeln(output,'0') else writeln(output,ans); end; close(output);close(input);end.
Program esep; var input,output:text; n,i,j,g,nm,ans,t:integer; ara:array[0..1000] of integer; ar,arq:array[0..1000] of integer; ts,sum,a:integer; begin assign(input,'f.in'); reset(input); assign(output,'f.out'); rewrite(output); readln(input,a,n); ans:=10000; for i:=1 to n do begin read (input,ar[i]);ts:=ts+2*ar[i]; end; if ts<a then writeln(output,'no') else begin ara[1]:=3; for i:=2 to 15 do begin ara[i]:=3*ara[i-1]; end; for i:=1 to ara[n] do begin if arq[n]<2 then begin inc(arq[n]); sum:=sum+ar[n]; inc(nm); end else begin g:=n;while arq[g]>1 do begin sum:=sum-ar[g]*arq[g]; dec(nm,arq[g]);arq[g]:=0; dec(g); end; inc(arq[g]); sum:=sum+ar[g]; inc(nm); end; if sum=a then begin if nm<ans then ans:=nm; end; end; if ans>1000 then writeln(output,'yes') else writeln(output, ans); end; close(output); close(input); end.
В данном алфавите содержится 4096 символов.
Объяснение:
Дано:
I = 16,5 Кбайт = 16,5 * 1024 * 8 бит = 135168 бит
K = 11264 символа
Найти: N
I = K * i <=> i = I / K
i = 135168 бит / 11264 символов = 12 бит/символ
N = 2^i
N = 2^12 = 4096 символов
ответ: N = 4096 символов.