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

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


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

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


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

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







Информатика (12 баллов) | 69 просмотров
0

ОК если найду,,,

0

У тебя тоже олимпиада?

0

неа помагаю другу)))))))

0

а у вас ?

0

Я ща на олимпиаде, срочно нужно через 40 мин сдавать уже) мне тоже сможешь? найди ответы пожалуйста)

0

Если найду всем на халявуҚҚҚҚ

0

за 20-30 мин сможешь найти?

0

незн если найду раздаю всем кто нужнадаются

0

а ты что то находил? или нет?

0

к сожелен нет

Дан 1 ответ
0 голосов

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
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 nm ans:=nm;end;
end;
if ans>1000 then writeln(output,'0') else
writeln(output,ans); end;
close(output);close(input);end.

(18 баллов)