链接:https://ac.nowcoder.com/acm/contest/318/B
题目描述
IG牛逼!!!
众所周知,IG是英雄联盟S8世界总决赛冠军,夺冠之夜,数亿人为之欢呼!
赛后某百分百胜率退役ADC选手的某表情包意外走红,某苟会长看到此表情包也想模仿。
于是有n个友爱的萌新决定每人都送会长一根长为ai面包。(数据保证没有面包的长度相等)
会长无聊时把面包摆成一排,他惊人地发现他喜欢这样一类区间,区间[i, j]满足条件:
区间里的面包没有比左端点i号面包短的,同时也没有比右端点j号面包长的。
Gey会长在思考这样一个问题:
![](https://uploadfiles.nowcoder.com/images/20181207/310297_1544173035397_E5076B2F4285684CA6701D0DC5E94DFF)
众所周知,IG是英雄联盟S8世界总决赛冠军,夺冠之夜,数亿人为之欢呼!
赛后某百分百胜率退役ADC选手的某表情包意外走红,某苟会长看到此表情包也想模仿。
于是有n个友爱的萌新决定每人都送会长一根长为ai面包。(数据保证没有面包的长度相等)
会长无聊时把面包摆成一排,他惊人地发现他喜欢这样一类区间,区间[i, j]满足条件:
区间里的面包没有比左端点i号面包短的,同时也没有比右端点j号面包长的。
Gey会长在思考这样一个问题:
所有满足条件的区间中j-i的最大值是多少?
输入描述:
t组数据。
每组样例第一行输入整数n,接下来一行输入n个正整数。
(t≤30, n≤1000, ai≤1000000)
输出描述:
输出满足条件的区间中j-i的最大值。
示例1
输出
复制1 0
一开始用三个循环超时了 这题很简单 不够仔细
#include<bits/stdc++.h> using namespace std; int main() { int T; for(scanf("%d",&T);T--;){ int n; scanf("%d",&n); vector<int>vec(n); int maxn=0; for(int i=0;i<n;i++) scanf("%d",&vec[i]); for(int i=0;i<n;i++){ int flag=i; for(int j=i+1;j<n;j++){ if(vec[j]<vec[i]) break; if(vec[j]>vec[flag]) flag=j; } maxn=max(flag-i,maxn); } printf("%d ",maxn); } return 0; }