。。。。

与题解思路不一样的解法:

#include<bits//stdc++.h>

using namespace std;

long long int Min(long long int a,long long int b)

{

return a<b?a:b;

}

int main()

{

int t,n;

long long int H[50000];

scanf("%d",&t);

for(int x=1;x<=t;x++)

{

scanf("%d",&n);

for(int i=0;i<n;i++) scanf("%lld",&H[i]);

int flag[50000];

memset(flag,0,sizeof(flag));

for(int i=0;i<n-1;i++)

{

int j=i+1;

long long int max=H[j];

flag[i]++;

while(j<n-1&&H[i]>max)

if(Min(H[i],H[++j])>max){

for(int a=i;a<j;a++) flag[a]++;

max=max>H[j]?max:H[j];

}

}

int MAX=0,most;

for(int i=0;i<n-1;i++) if(flag[i]>MAX) {MAX=flag[i];most=i;}

printf("Case #%d: %d %d\n",x,most+2,flag[most]);

}

return 0;

}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务