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 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 ≤ K ≤ N, 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
Output
#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
Output
#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