给你一个长度为n的整数序列A1,A2,……,An,找出两个整数Ai和Aj(i<j),使得Ai-Aj尽量大。
2
3
5 2 1
6
2 3 6 2 1 -1
4 1 3
7 3 6
如果你认为数据太大,则本OJ推荐使用long long
AC码:
#include<stdio.h>
struct node
{
long long m;
long long c;
}min[100005];
long long num[100005];
int main()
{
long long n,T,i,max,x,y;
scanf("%lld",&T);
while(T--)
{
scanf("%lld",&n);
for(i=1;i<=n;i++)
scanf("%lld",&num[i]);
min[n].m=num[n];
min[n].c=n;
for(i=n-1;i>=1;i--)
{
if(num[i]<=min[i+1].m) // 这错了一次,没写=
{
min[i].m=num[i];
min[i].c=i;
}
else
{
min[i].m=min[i+1].m;
min[i].c=min[i+1].c;
}
}
max=-200000; // 这错了一次,赋了0
x=0;
y=0;
for(i=1;i<n;i++)
{
if(num[i]-min[i+1].m>max)
{
max=num[i]-min[i+1].m;
x=i;
y=min[i+1].c;
}
}
printf("%lld %lld %lld\n",max,x,y);
}
return 0;
}原文:http://blog.csdn.net/u012804490/article/details/25465837