题目:
解法:排序,把值小的和索引小的放在前面,记录一下之前索引最小的就可以了。
没什么可以讲的,上代码吧:
#include <bitsstdc++.h> using namespace std; typedef long long ll; struct node{ int value; int index; }a[50010]; bool cmp(node x,node y){ if(x.value != y.value) return x.value < y.value; return x.index < y.index; } int main() { int n; cin >> n; for(int i = 0;i < n; i++){ cin >> a[i].value;a[i].index = i; } sort(a,a+n,cmp); int num = a[0].index; int ans = 0; for(int i = 1;i < n; i++){ ans = max(ans,a[i].index-num); if(a[i].index < num) num = a[i].index; } cout << ans << endl; return 0; } // writen by zhangjiuding