做题 (problem) 题解

突然发现之前的草稿忘了发出去,同场中其他的也不知道放哪儿了…

UPC NO.73 问题 D: 做题 (problem)
时间限制: 1 Sec 内存限制: 128 MB

题目描述
小鱼出了一份数学作业,一共有 n 题,编号为 1 到 n 。小鱼为每一题设定了一个难度值,第 i 题的难度值为 ai 。

小 Y 想来做一做小鱼出的数学作业,但是他太弱了,只会做难度值严格小于 m 的题。而且,由于他比较蠢,他每次做的题要么是还没做过的题中最靠前的,要么是还没做过的题中最靠后的。当他无题可做时,他就回去了。

你需要求出到最后小 Y 一共做了几题。

输入
第一行两个整数n,m —— 共 n 题,小 Y 只会做难度值 严格小于 m 的题。
第二行 n 个整数 a1,a2,a3,…,an,其中 ai 表示第 i 题的难度值。
输出
共一行一个数,表示到最后小 Y 一共做了几题。
样例输入
【样例1】
8 5
4 2 3 1 5 1 6 4
【样例2】
5 3
3 1 2 1 3
样例输出
【样例1】
5
【样例2】
0

提示
样例1解释:
小 Y 可以以这样的顺序做题:
[4,2,3,1,5,1,6,4]->[2,3,1,5,1,6,4]->[2,3,1,5,1,6]->[3,1,5,1,6]->[1,5,1,6]->[5,1,6]
所以小 Y 一共做了5题。
样例2解释:由于前后两端的题目小 Y 都不会做,所以他一题也做不了。

对于20%的数据,n=1
对于50%的数据,n≤5
对于100%的数据,1≤n≤100,1≤m≤100,1≤ai≤100

题解:先从一边(假设从左)开始,符合要求就计数,不符合要求就标记一下,从另一边开始到标记处之前,符合要求时计数。

#include <bits/stdc++.h>
#define ll long long 
using namespace std;
int n,m,a[1010],sum,k;

int main()
{
    
    
	cin>>n>>m;
	for(int i=1; i<=n; i++)  cin>>a[i];
	
	for(int i=1; i<=n; i++) {
    
    
		k=i;
		if(a[i]<m)	sum++;
		else  break;
	}
	
	for(int j=n; j>k; j--) {
    
    
		if(a[j]<m)  sum++;
		else  break;
	}
	
	cout<<sum<<endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Luoxiaobaia/article/details/107678214