Задача F Оплата Сегодня Али в местном магазине сделал покупку за C тенге. Он только хотел...

0 голосов
61 просмотров

Задача F Оплата

Сегодня Али в местном магазине сделал покупку за C тенге. Он только хотел расплатится и услышал от продавца фразу "Без сдачи пожалуйста, молодой человек". У него есть всего N монет достоинств a1, a2, ..., aN тенге. Определите, сможет ли он расплатится без сдачи.

Формат входных данных

В первой строке входного файла записаны два целых числа C (1 ≤ C ≤ 1000) и N (1 ≤ N ≤ 15) — общая сумма покупки и количство монет у Али соответсвенно. Во второй строке записаны N целых чисел a1, a2, ..., aN (1 ≤ ai ≤ 1000)— достоинства монет Али.

Формат выходных данных

В единственной строке выведите слово «YES», если Али сможет расплатится без сдачи. Иначе, выведите «NO»


Информатика (17 баллов) | 61 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

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 
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 <br>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 nmend;
end;
 if ans>1000 then writeln(output,'yes') else
 writeln(output, ans); 
  end;

close(output);
close(input);
end.

(68 баллов)