[R17A]谁在装弱
// [R17A]谁在装弱.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
/*
题目地址:
https://bs.daimayuan.top/p/97
题目名称:
[R17A]谁在装弱
题目描述:
有 n 个同学,将他们按分数从高到低排列,排在第 i 名的同学分数为 a_i。满分为 1000000。
同学们按照排名报分数,排在第 i 名的同学报的分数为 b_i。
已知其中有恰好一个同学装弱,他将自己的分数少报了 10 分,其余同学报的分数都是真实分数,且对于 2≤i≤n 有 b_{i-1}≥b_i。
求有多少个同学可能是装弱的那个同学。
输入格式:
第一行包含一个整数 n,表示同学的数量。
第二行包含 n 个整数 b_i,分别表示每个同学自己报的分数。数据保证对于 2≤i≤n 有 b_{i-1}≥b_i。
输出格式:
输出一个整数表示可能装弱的同学的数量。
数据范围:
对于 100% 的数据,1≤n≤10^5,1≤b_i≤10^6。数据保证对于 2≤i≤n 有 b_{i-1}≥b_i。
样例输入:
5
999991 999982 20 10 10
样例输出:
2
样例解释:
排在第 1 名的同学不可能是装弱的那个同学,因为如果他是装弱的那个同学,那么他的真实分数为 1000001,超过了满分。
排在第 2 名的同学不可能是装弱的那个同学,因为如果他是装弱的那个同学,那么他的真实分数为 999992,超过了第 1 名的分数。
如果排在第 3 名的同学装弱,那么同学们的真实分数为:{999991,999982,30,10,10}。
如果排在第 4 名的同学装弱,那么同学们的真实分数为:{999991,999982,20,20,10}。
排在第 5 名的同学不可能是装弱的那个同学,因为如果他是装弱的那个同学,那么他的真实分数为 20,超过了第 4 名的分数。
样例输入:
5
999990 100 90 80 1
样例输出:
5
*/
#include <iostream>
using namespace std;
const int N = 100010;
int a[N];
int n;
int main()
{
cin >> n; int ans = 0;
for(int i= 0; i < n; i++)
{
cin >> a[i];
if (i == 0) {
if (a[i] + 10 > 1000000) { ans++; }
}
else {
if(a[i] + 10 > a[i - 1] || a[i]+10> 1000000) {
ans++;
}
}
}
cout << n-ans << endl;
return 0;
}
作 者: itdef
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
浙公网安备 33010602011771号