比赛 20240913练习 评测结果 AEEETEEETA
题目名称 奶牛排队 最终得分 20
用户昵称 李奇文 运行时间 5.457 s
代码语言 C++ 内存使用 4.58 MiB
提交时间 2024-09-13 20:22:01
显示代码纯文本
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. struct node{
  4. int l,r;
  5. }a[100005],b[100005];
  6. int n,c[100005],ans,j;
  7. int main(){
  8. freopen("tahort.in","r",stdin);
  9. freopen("tahort.out","w",stdout);
  10. scanf("%d",&n);
  11. for(int i=1;i<=n;i++){
  12. scanf("%d",&c[i]);
  13. a[i].l=a[i].r=b[i].l=b[i].r=i;
  14. }
  15. for(int i=1;i<=n;i++){
  16. j=i+1;
  17. while(true){
  18. if(c[i]<c[j]){
  19. a[i].r=j;
  20. j++;
  21. }else{
  22. break;
  23. }
  24. }
  25. }
  26. for(int i=n;i>=1;i--){
  27. j=i-1;
  28. while(true){
  29. if(c[i]>c[j]){
  30. b[i].l=j;
  31. j--;
  32. }else{
  33. break;
  34. }
  35. }
  36. }
  37. for(int i=1;i<=n;i++){
  38. if(a[i].r==i) continue;
  39. for(int k=i;k<=n;k++){
  40. if(b[k].l==k) continue;
  41. if((a[i].l==b[k].l)&&a[i].r==b[k].r){
  42. ans=max(ans,a[i].r-a[i].l+1);
  43. }else if(a[i].r==b[k].r){
  44. ans=max(ans,min(a[i].r-a[i].l+1,b[k].r-b[k].l+1));
  45. }
  46. }
  47. }
  48. printf("%d",ans);
  49. return 0;
  50. }