51nod 1272 最大距离 O(nlog(n)) , 快排 , 最大连续子串

题目:

 

解法:排序,把值小的和索引小的放在前面,记录一下之前索引最小的就可以了。

  没什么可以讲的,上代码吧:

 

 

#include <bits\stdc++.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 

 

posted @ 2017-10-06 19:07  ninding  阅读(210)  评论(0编辑  收藏  举报