[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;
}

   

posted on 2025-07-14 16:30  itdef  阅读(6)  评论(0)    收藏  举报

导航