Description
Input
Output
Sample Input
| input | output |
|---|---|
3 2 6 4 |
1 2 |
这个题看了老半天才懂。这么解释吧,设离散函数为f(n),根据输入数据则是,f(1) = 2;
f(2) = 6; f(3) = 4.现在有三个点 了对吧,现在就是要从这三个点中找出两个点,使在这两个点之间的点不能再这条直线的上方,并且倾角(注意:不是斜率,是倾角)要最大。显然,如果有点在一条直线下的话那么这条直线倾角绝对不是最大的,所以满足题意的答案必然是两个相邻的点,题目就转化为了求相邻点距离的绝对值了。
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
using namespace std;
int main()
{
long long int a[100001];
int n,t,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
}
long long max=-1;
for(i=2;i<=n;i++)
{
if(llabs(a[i]-a[i-1])>max)
{
max=llabs(a[i]-a[i-1]);
t=i;
}
}
printf("%d %d\n",t-1,t);
return 0;
}
519



被折叠的 条评论
为什么被折叠?



