这题实在不知道起啥名好了
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
懒得想背景故事了,开门见山。
有一个长度为n的整数数列A0,A1,A2....An-1。从中找出两个整数Ai和Aj,Ai在Aj的前面,即i<j,使得Ai-Aj尽可能的大。请输出可能的最大的Ai-Aj的值。
输入
多组输入。每一组测试数据的第一行是一个整数n,然后第二行是n个整数,第i个数
表示Ai。(测试数据组数<=20,2<=n<=10^6,-10^8<=Ai<=10^8).
输出
每组测试数据输出一行一个整数,为可能的最大的Ai-Aj的值。
示例输入
5 3 1 2 4 3 5 3 1 2 4 1
示例输出
2 3
提示
来源
SCFF
示例程序
#include <iostream>
#include<cstdio>
using namespace std;
int main()
{
int n,g;
int maxn,y,cha;
while(~scanf("%d",&n))
{
cha=-0x3f3f3f3f; //初始化差值为无穷小;
scanf("%d",&maxn); maxn用来暂存最大数;
for(int i=1;i<n;i++)
{
scanf("%d",&y);
g=maxn-y;
if(g>cha) //只要大于差值就更新;(苦逼得我我没想到若这是一列弟升序列,唉);
cha=g;
if(g<0)
maxn=y;
}
printf("%d\n",cha);
}
return 0;
}