给你一个长度为n的整数序列A1,A2,……,An,找出两个整数Ai和Aj(i<j),使得Ai-Aj尽量大。
235 2 162 3 6 2 1 -1
4 1 37 3 6
如果你认为数据太大,则本OJ推荐使用long long
解:一看到10W的整数就明白此题解题复杂度应该为O(n),不然肯定会超时,起初写的时候写了之后无限wa,后来被迫无奈下看了后台数据,才明白自己的错误处,,好失败。。。
01.
#include<stdio.h>
02.
int
main()
03.
{
04.
int
N;
05.
scanf
(
"%d"
,&N);
06.
while
(N--)
07.
{
08.
long
long
i,n,x,maxx,minn,maxi=1,jj,mini=2,cha,j=1;
09.
scanf
(
"%lld"
,&n);
10.
scanf
(
"%lld"
,&maxx);
11.
scanf
(
"%lld"
,&minn);
12.
jj=maxx,cha=maxx-minn;
13.
if
(maxx<minn)
14.
jj=minn,j=2;
15.
for
(i=3; i<=n; i++)
16.
{
17.
scanf
(
"%lld"
,&x);
18.
if
(jj-x>cha)
19.
maxx=jj,maxi=j,minn=x,mini=i,cha=jj-x;
20.
if
(x>jj)
21.
jj=x,j=i;
22.
}
23.
printf
(
"%lld %lld %lld\n"
,cha,maxi,mini);
24.
}
25.
}
首次做的时候20行写成了if(x>maxx)
不管咋样都不明白错在了哪里,还以为是oj的原因,-_-|||
题wa了一定是自己的原因,一定要把握每个程序,不留漏洞!