A27941. 增高垫
填空题
中等
知识点
题目描述
增高垫
题目描述
网传最大号的增高垫有 16 厘米,可以一下把 1.64 米的男孩变成一米八的大汉,不少对自己身高缺乏自信的男生女生会悄悄买来穿,特别是大家站成一排拍照的时候。
假设准备拍照的一排人中,只要有人看到身边紧挨着的人比自己高,就会忍不住穿增高垫,并且一定要比人家多穿一层。你的任务就是在看过这一排人的身高后,算出谁穿了最多层的增高垫。
输入
输入首先在第一行给出正整数 n(≤ 104),为一排人的个数。随后一行给出 n 个正整数,表示 n 个人的身高(厘米)。每个数值是不超过 300 的正整数,数字间以空格分隔。
输出
在一行中输出穿了最多层增高垫的人的位置和穿的层数(位序从左到右,从 1 开始)。如果有并列,按从左到右的顺序,每个人的信息占一行。
输入样例
10
150 160 186 200 170 175 180 186 186 183输出样例
1 3
5 3参考答案
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[10001];
int b[10001];
int c[10001];
int n;
cin>>n;
for(int i = 1;i<=n;i++)
{
cin>>a[i];
}
b[0] = 1;
b[n+1] = 1;
int cnt = 0;
for(int i = 1;i<=n;i++)
{
if(a[i]>=a[i+1] && a[i]>=a[i+1]) b[i] = 1;
}
for(int i = n+1;i>=0;i--)
{
if(b[i]==1)
{
cnt = 0;
}
c[i] = cnt;
cnt++;
}
int ma = -1;
for(int i = 1;i<=n;i++)
{
ma = max(ma,c[i]);
}
for(int i = 1;i<=n;i++)
{
if(c[i] == ma)
{
cout<<i<<" "<<c[i]<<endl;
}
}
return 0;
}
上一题
下一题