站外题求助(超出时限)
  • 板块题目总版
  • 楼主Jason12
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/12/31 22:16
  • 上次更新2023/10/28 13:16:38
查看原帖
站外题求助(超出时限)
169606
Jason12楼主2021/12/31 22:16

题目:给定一个一到n的数字各出现一定的排列a[1]、a[2]、···、a[n]。定义f(l,r)表示a[l]、a[l+1]、a[l+2]、···a[r]中的次大值,你需要求出对于所有的1<=i<j<=n,f(i,j)的和。 输入:第一行一个整数n,第二行n各整数表示a[i]。 输出:一行一个整数,表示答案。 范围:对于100%的整数n,1<n<=100000; 这是我的代码:``` #include <bits/stdc++.h> using namespace std; int main() { int n,a[100001],b,c,s=0; cin>>n; for (int i=1;i<=n;i++) { cin>>a[i]; } for (int i=1;i<n;i++) { for (int j=i+1;j<=n;j++) { if (a[i]>a[i+1]) { b=a[i]; c=a[i+1]; } else { b=a[i+1]; c=a[i]; } if (j>i+1) { for (int k=i+2;k<=j;k++) { if (a[k]>=b) { c=b; b=a[k]; } else if (a[k]<b && a[k]>c) c=a[k]; } } s=s+c; } } cout<<s<<endl; return 0; }

提示超出时限,请问各位大佬该咋改?╮(╯﹏╰)╭
2021/12/31 22:16
加载中...