Pedro está desenvolvendo um jogo on-line para dois jogadores, em que o objetivo é forçar um erro do adversário, blefando. A questão é que, à medida que o jogo prossegue, mais tempo é necessário para verificar se uma jogada é válida ou não, ou seja, se é um blefe ou não. Daí que Pedro precisa da sua ajuda para implementar um algoritmo rápido para verificar se uma jogada é ou não um blefe.
Considere um conjunto fixo de números inteiros, positivos ou negativos, e uma sequência de números inteiros , inicialmente vazia. Os jogadores se alternam em jogadas que consistem em incluir um número por vez no final da sequência . Quando chega a sua vez, um jogador deve fazer uma de duas jogadas válidas possíveis: (i) incluir em qualquer um dos números do conjunto ; (ii) ou incluir em um número que é a soma de dois números quaisquer que já estejam em (note a soma não é de números necessariamente distintos, pode ser a soma de um número com ele mesmo).
Nesta tarefa, você deve escrever um programa que, dado o conjunto e uma sequência , diga se todas as jogadas foram válidas, ou mostre qual é a primeira jogada inválida em .
A entrada consiste de três linhas. A primeira linha contém dois números e , respectivamente o tamanho do conjunto e o tamanho da sequência . A segunda linha contém os números inteiros do conjunto . A terceira linha contém os números inteiros da sequência .
Seu programa deve produzir uma única linha. A linha deve conter a
palavra “sim” caso todas as jogadas em
sejam válidas; se houver alguma jogada inválida em
,
a linha deve conter o primeiro número inválido em
.
6 11
34 9 -2 77 -11 5
34 5 -2 32 -11 -6 28 66 -2 -22 33
sim
6 8
34 9 -2 77 -11 5
-11 77 -2 75 9 48 7 5
48