Exercícios da OBI 2018 Resolvidos - Segunda Fase - Nível PJ

Programação Competitiva

Fala galera,

Hoje nós trazemos para vocês as resoluções dos exercícios da segunda fase da Olimpíada Brasileira de Informática de 2018, nível Programação Júnior (PJ).

Os problemas do nível PJ são normalmente problemas simples, ideais para quem está começando a aprender programação. Mesmo que você não tenha participado da OBI esse ano mas está aprendendo programação, esses problemas são muito bons para testar seus conhecimentos.

Todos os problemas já estão disponíveis no Neps Academy. É recomendado que você primeiro tente resolver o problema antes de conferir a resolução a seguir.

Copa

Código em C++

#include <iostream>
using namespace std;

int main(){
    int L, K;

    cin >> L >> K;
    if( (L-1)/2 == (K-1)/2 ){
        cout << "oitavas\n";
    } else if( (L-1)/4 == (K-1)/4 ){
        cout << "quartas\n";
    } else if( (L-1)/8 == (K-1)/8 ){
        cout << "semifinal\n";
    }else {
        cout << "final\n";
    }
}



Pesos

Código em C++

#include <iostream>
using namespace std;

int main(){
    int N;
    int C[10005];

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

    int deuRuim = 0;
    C[0] = 0;
    for(int i = 1; i <= N; i++){
        if( C[i]-C[i-1] > 8 ){
            deuRuim = 1;
        }
    }
    if(deuRuim == 1){
        cout << "N\n";
    }else{
        cout << "S\n";
    }
}



Cápsulas

Código em C++

#include <iostream>
using namespace std;

int N, F;
int C[1000005];

int dinheiro(int x){
    int total = 0;

    for(int i = 0; i < N; i++){
        total += x/C[i];
    }

    return total;
}

int main(){
    cin >> N >> F;
    for(int i = 0; i < N; i++){
        cin >> C[i];
    }
    //definir intervalo da resposta
    int e=1, d=100000000, m;
    //busca
    while( e < d ){
        m = (e+d)/2;
        if( dinheiro(m) >= F ){
            d = m;
        }else{
            e = m+1;
        }
    }

    cout << e << endl;

}

Bons estudos!

Comentários