题目描述
经过2019一年的比赛,牛牛战队的队员发现了一个重大规律:I题是个签到题!
签到题的定义是:通过人数大于等于全场人数的80%或者通过人数是所有题目前三多的题(也就是最多有两个题目通过人数严格比它多)叫做签到题。
2020赛季就要到了,牛牛战队要去验证这个规律了,已知现在每个题的过题情况,看一看I题是不是一个签到题。
输入描述:
输入数据共2行。第一行包括两个整数 ,表示比赛的总题数和比赛的总人数。
第二行包括以空格分隔的n个整数 ,表示每个题通过的人数。
输出描述:
如果I题是个签到题,则输出Yes,否则输出No。(不区分大小写)
输入
9 100
100 100 100 100 100 100 100 100 100
输出
Yes
题解
- 排个序找一下即可,简单
- 也可以直接排序之后判断是否大于等于 即刻
AC-Code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 7;
struct Node {
int i;
double val;
}a[maxn];
bool cmp(Node a, Node b) {
return a.val > b.val;
}
int main() {
int n, m; while (cin >> n >> m) {
for (int i = 0; i < n; ++i) {
cin >> a[i].val;
a[i].i = i + 1;
}
double score_9 = a[8].val;
sort(a, a + n, cmp);
bool flag = true;
int cnt = 0;
for(int i = 0; i < n && flag; ++i){
if(a[i].i == 9){
if(a[i].val * 100 >= m * 80 || cnt < 3) flag = true;
else flag = false;
break;
}
if(a[i].val != score_9) ++cnt;
}
cout << (flag ? "Yes" : "No") << endl;
}
return 0;
}