Algorithm


Problem Name: beecrowd | 2663

Problem Link: https://www.beecrowd.com.br/judge/en/problems/view/2663

Fase

 

Por Maratona de Programação da SBC – 2017 BR Brazil

Timelimit: 1

Em diversas competições acadêmicas, como a Olimpíada Brasileira de Informática (OBI), uma certa quantidade de competidores se classifica de uma fase para a fase seguinte, garantindo uma das vagas disponíveis. Entretanto, normalmente essa quantidade é variável, pois dada uma certa quantidade mínima de classificados, é frequente que haja empate na última vaga de classificação. Neste caso, é comum que todos os competidores empatados na última colocação se classifiquem.

Sua tarefa é ajudar a calcular o número de competidores classificados para a próxima fase. Você receberá uma lista de pontuações obtidas pelos competidores e o número mínimo de vagas para a fase seguinte e você deve decidir quantos competidores de fato vão se classificar.

 

Entrada

 

A primeira linha da entrada contém um número inteiro N, 1 ≤ N ≤ 1000, representando o número de competidores. A segunda linha conterá um inteiro K, 1 ≤ KN, indicando o número mínimo de competidores que devem se classificar para a próxima fase. Em seguida, N linhas conterão, cada uma um número entre 1 e 1000, inclusive, correspondente á pontuação de um competidor.

 

Saída

 

Seu programa deve imprimir uma linha, contendo o número de classificados para a próxima fase.

 

 

 

Exemplos de Entrada Exemplos de Saída

10

3

1

2

3

4

5

5

4

3

2

1

4

 

Code Examples

#1 Code Example with C Programming

Code - C Programming


#include <stdio.h>

int main(void)

{
    int a, b, i, j, temp, x, y;

    scanf("%i %i", &a, &b);
    y=b;

    int arr[a];

    for (i=0; i  <  a; ++i)
        scanf("%d", &arr[i]);

    for (i=0; i  <  a-1; ++i)
    {
        for (j=i+1; j  <  a; ++j)
        {
            if (arr[j] > arr[i])
            {
                temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            }
        }
    }

    for (i=b; i  <  a; ++i)
    {
        if (arr[b-1]==arr[i])
            ++y;
    }

    printf("%d\n", y);

    return 0;
}

Copy The Code & Try With Live Editor

Input

x
+
cmd
5 2 500 500 500 500 500

Output

x
+
cmd
5

#2 Code Example with C++ Programming

Code - C++ Programming


#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    int k;
    cin >> n;
    cin >> k;
    vector<int> a(n);
    for(int i=0;i  <  n; i++)
        cin >> a[i];
    sort(a.begin(),a.end(),greater < int>());
    int count=0;
    for(int i=0;i  <  n; i++)
    {
        count++;
        if(count==k)
        {
            for(int j=i+1;j < n; j++)
            {
                if(a[i]!=a[j])break;
                count++;
            }
            break;
        }
    }
    printf("%d\n",count>;
    return 0;
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
5 2 500 500 500 500 500

Output

x
+
cmd
5

#3 Code Example with Javascript Programming

Code - Javascript Programming


var input = require('fs').readFileSync('/dev/stdin', 'utf8');
var lines = input.split('\n');
const number = parseInt(lines.shift());
const ranking = parseInt(lines.shift());
let cont = 0;
let people = [];
for(let i = 0; i  <  number; i++){
    let person = lines.shift().trim();
    people.push(person);
}
people.sort((a,b) => a - b).reverse();

for(let j = ranking ; j  <  people.length; j++){
    if(people[ranking - 1] == people[j]){
        cont++
    }
}
console.log(ranking + cont);
Copy The Code & Try With Live Editor
Advertisements

Demonstration


Previous
#2653 Beecrowd Online Judge Solution 2653 Dijkstra Solution in C, C++, Java, Js and Python
Next
#2670 Beecrowd Online Judge Solution 2670 Máquina de Café Solution in C, C++, Java, Js and Python