http://acm.timus.ru/problem.aspx?space=1&num=1010
思路:就是相邻的点的斜率必定最大,然后在这两点之间的点必定在它下方(其实看清题意,仔细思考下,就会明白,相邻两点之间由于都是整数,是没有点的.......)
代码:
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
typedef __int64 ss;
ss dp[200000];
ss deal(ss m)
{
if(m<0)
m=-m;
return m;
}
int main()
{
int n;
while(scanf("%d",&n)>0)
{
for(int i=1;i<=n;i++)
scanf("%I64d",&dp[i]);
int num;
ss maxx=0;
for(int i=1;i<n;i++)
{
if(maxx<deal(dp[i]-dp[i+1]))
{
maxx=deal(dp[i]-dp[i+1]);
num=i;
}
}
printf("%d %d\n",num,num+1);
}
return 0;
}