UVA - 11078 Open Credit System 推理

来源:互联网 发布:淘宝有人复制我的宝贝 编辑:程序博客网 时间:2024/05/22 03:03

题目大意:给一个长度为n的整数序列A0,A1,A2.。。An-1,找出两个整数Ai和Aj(i<j),使得Ai-Aj尽量大

解题思路:用MAX记录最大的Ai,MIN记录最小的Aj

当num[i]大于MAX时,令MAX = Aj,MIN=INF

当num[i] <MIN时,MIN = num[i],令ans = min(ans,MAX-MIN)

#include<algorithm>#include<cstdio>#include<cstring>using namespace std;#define INF 0x3f3f3f3f#define maxn 100010int num[maxn];int main() {int test, n, x;scanf("%d", &test);while(test--) {scanf("%d",&n);for(int i = 0; i < n; i++) scanf("%d", &num[i]);int ans = num[0] - num[1], MAX = num[0], MIN = num[1];for(int i = 2; i < n; i++) {if(num[i] > MAX) {MAX = num[i];MIN = INF;continue;}if(num[i] < MIN) { MIN = num[i];ans = max(MAX-MIN,ans);}}printf("%d\n",ans);}return 0;}


0 0
原创粉丝点击