测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题