您的位置:首页 > 运维架构

Uva 11078 Open Credit System

2013-03-20 16:11 239 查看
Root :: AOAPC I: Beginning Algorithm Contests -- Training Guide (Rujia Liu) :: Chapter 1. Algorithm Design :: Designing Efficient Algorithms :: Examples

/*
题意:n个整数a1~an-1 找到两个数ai aj 使ai-aj尽可能大(i<j)
直接的想法 找到每组(ai,aj)数对 max比较找到dmax
时间是n^2 超时(M=100000+10)
思路:单位时间维护最大值,该题不用输入都结束再处理数据(时间从n降到l)
可以边输入边比较维护。
输出要求打印距离即可,当要求输出i和j时
要记得在max函数更新最大值时候记录i和j
*///Uva 11078 Open Credit System

//AC

//AC
#include<stdio.h>
#include<algorithm>
using namespace std;
const int M=100000+10;
int t;
int a[M];
int main()
{
int i,j,k,n;
int ai,dmax;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
scanf("%d%d",&a[0],&a[1]);
dmax=a[0]-a[1];
ai=a[0];
for(i=1;i<n;i++)
{
if(i<2)
{
dmax=max(dmax,ai-a[1]);//单位时间维护距离最大值dmax
ai=max(ai,a[1]);//不断更新ai 使ai尽可能大,为使ai-aj尽可能大
}
else
{
scanf("%d",&a[i]);
dmax=max(dmax,ai-a[i]);
ai=max(ai,a[i]);
}
}
printf("%d\n",dmax);
}
return 0;
}
/*
5
6
1 2 3 4 78 6
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: