Solução

Sapato

Para resolver essa questão vamos utilizar uma variável auxiliar que leva o nome ok (do tipo bool), que guarda true (verdadeiro) se há um sapato no estoque que seja do tamanho do pé de Cateus, ou false (falso) caso contrário. Iremos percorrer o estoque da SBC da seguinte forma, primeiro leio o tamanho do sapato que estou verificando agora e depois checo se ele é igual ao do sapato que estou procurando, se sim ok=true, senão continuo procurando.

Por fim, vamos checar o valor da variável ok, se for true o programa imprime “SIM”, caso contrario o programa imprime “NAO”. Segue o código solução para maior entendimento.

#include <iostream>

using namespace std;

int t, n; // Declaro t e n

int main()
{

    cin >> n;

    bool ok = false; // Declaro ok, que inicia como falso
   
    for(int i = 0 ; i < n ; i++) // Percorro todo o estoque
    {
        
        int x;
        
        cin >> x;
    
        if(x == t) // Se há um sapato no estoque que caiba em Cateus
        {
            ok = true; // ok recebe verdadeiro
        }
    }

    if(ok == true) // Se o sapato existir
    {
        cout << "SIM\n";
        
    }else // Caso contrário
    {
        cout << "NAO\n";
    }

    return 0;
}

Pincéis

Vamos definir o vetor p de tal forma que p[i] = quantidade de pincéis da cor i que Letícia possui. Inicialmente iremos, para todos os presentes, adicionar os q pincéis a cor c. Após isso, precisamos saber se Letícia conseguiu ficar com a mesma quantidade de pincéis para todas as cores. Para isso, basta percorrermos o vetor p checando se duas cores consecutivas possuem valores diferentes, se sim ok = false e paro o loop, ou seja, ela não possui a mesma quantidade de pincéis para todas as cores, caso contrário continuamos percorrendo o vetor.

Por último, checamos o valor de ok. Se ok for true o programa imprime “S”, caso contrario o programa imprime “N”. Abaixo temos o código solução para maior entendimento.

#include <iostream>

using namespace std;

int n, m, p[100100]; // Declaro as variáveis que irei utilizar

int main()
{

    cin >> n >> m;

    for(int i = 1 ; i <= n ; i++)
    {
        cin >> p[i];
    }

    for(int i = 1 ; i <= m ; i++)
    {
        int c, q; // Declaro c e q
        
        cin >> c >> q;

        p = p + q; // Adiciono q pincéis a cor c
    }

    bool ok = true; // Declaro ok que inicia como verdadeiro

    for(int i = 2 ; i <= n ; i++)
    {     
        if(p[i] != p[i-1])
        { // Se a quantidade de pincéis de i e i-1 for diferente

            ok = false;
            break; // paro o loop
        
        }
    }
    
    if(ok == true)
    { // Se Letícia tiver o mesmo número de pincéis para todas as cores

        cout << "S\n";
    
    }else // Se não
    {
        cout << "N\n";

    }

    return 0;
}