Solução por Anita Ramos
Esse problema exige o estabelecimento de uma lógica simples de buscar o máximo até um limite dado na entrada com o auxílio da função para garantir esse máximo.
Iniciando a programação então, depois de declarar a biblioteca e as variáveis e ler o , lemos o e , armazenando-os em um vetor de apenas 3 posições. Posteriormente, ordenamos esse vetor e utilizamos o comando para passar pelos 3 valores e subtrair do (valor total) se esse ainda for maior ou igual a 0. Junto a subtração do valor, soma-se 1 na resposta final . Por fim, imprimi-se essa resposta e o programa retorna a 0.
Segue o código comentado para melhor compreensão da solução:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<bits/stdc++.h> //biblioteca utilizada | |
using namespace std; | |
int main() | |
{ | |
int N, v[3], res=0; //declaração de variáveis | |
scanf("%d", &N); //leitura do 'N' | |
scanf("%d %d %d", &v[0], &v[1], &v[2]); //leitura do 'X', 'Y' e 'Z' | |
sort(v,v+3); //ordenação crescente | |
for(int i=0; i<3; i++) //loop para checar todos os 3 valores X,Y,Z já ordenados | |
{ | |
N-=v[i]; //subtrai o valor da posição 'i' no vetor 'v[]' de 'N' (total) | |
if(N>=0)res++; //se o 'N' ainda não é menor que 0, acrescenta-se 1 na resposta final 'res' | |
} | |
printf("%d", res); //imprime a resposta 'res' | |
return 0; //retorna a 0 | |
} |