ural 1010. Discrete Function

一个离散的函数,求两点连线的上方没有点而且斜率最大。

 

开始纠结了好久,后来btw想出来了,他说,如果两点连线的下方有点,那么上面那个点一定可以和下方的某点连起来满足题意。

 

所以说,这种只能存在在相邻两点之间,也就是x相邻,求|yi - yj| i j相邻差值最大即可。很神奇吧~

 

#include <stdio.h> #include <stdlib.h> #include <math.h> #define MAX 100001 long long int a[MAX]; int main() { int n,i; scanf("%d", &n); for(i=0; i<n; i++) scanf("%lld",&a[i]); long long max = -1; int t; for(i=1; i<n; i++) if( llabs(a[i] - a[i-1]) > max ) max = llabs(a[i] - a[t = i-1]); printf("%d %d/n",t+1,t+2); return 0; }  

你可能感兴趣的:(ural 1010. Discrete Function)