Mais um problema resolvido da plataforma URI/BEECROWD! Esse é um exercício da categoria "Ad-Hoc". Achei bem divertido e simples. É um bom exercício pra quem está começando a aprender programação.
Inclusive vou deixar duas perguntas aqui:
- Tinha como resolver com menos variáveis?
- Tinha como resolver com outra estrutura de repetição?
Plataforma: URI (BEECROWD)
Problema: 3117
Linguagens: C e C++
Solução:
Os códigos em C e C++ seguem a mesma lógica. A ideia foi ler dois valores (n e k) e iterar de 0 até n-1, lendo um outro valor v. Sempre que v fosse não positivo, incrementava a variável r, que, portanto, funcionava como um contador de valores não positivos. Após contar esses valores, se r fosse maior ou igual a k, imprime YES, senão imprime NO. Sem esquecer que é necessário o "\n" (em C, usando stdio) ou std::endl (em C++, usando iostream) no comando de escrita.
Código em C:
#include <stdio.h> int main() { int n, k, i, v, r; scanf("%d %d", &n, &k); for (i = 0; i < n; i++) { scanf("%d", &v); if (v <= 0) r++; } if (r >= k) printf("YES\n"); else printf("NO\n"); return 0; }
Código em C++:
As únicas diferenças do código em C++ para o código em C são, basicamente, o uso de iostream, usando, portanto, std::cin, std::cout e std::endl, e a possibilidade de criar uma variável no escopo do for (a variável int i).
#include <iostream> using namespace std; int main() { int n, k, v, r; cin >> n >> k; for (int i = 0; i < n; i++) { cin >> v; if (v <= 0) r++; } if (r >= k) cout << "YES" << endl; else cout << "NO" << endl; return 0; }