您的位置:首页 > 其它

UVA 11078

2014-06-10 17:02 344 查看
由于题目中规定了i<j, 所以Ai-Aj要渠道最大值,那么Ai只有可能取A1~A(j-1)中最大的那个,从左到右遍历整个数组,维护这个最大值,计算的时间复杂度就可以降低到线性复杂度,否则用两重循环是n*n的复杂度,肯定会超时的。

#include <stdio.h>

int arr[100001];

int main(void){
int t, n, i;
int max, ans;

//freopen("input.dat", "r", stdin);
scanf("%d", &t);
while(t--){
scanf("%d", &n);
for(i=1; i<=n; i++){
scanf("%d", arr+i);
}

ans = arr[1] - arr[2];
max = arr[1];
for(i=2; i<=n-1; i++){
max = max > arr[i] ? max : arr[i];
ans = max-arr[i+1] > ans ? max-arr[i+1] : ans;
}
printf("%d\n", ans);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  acm uva