Cod sursa(job #573868)

Utilizator Sm3USmeu Rares Sm3U Data 6 aprilie 2011 17:08:08
Problema Rays Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <stdio.h>
#include <algorithm>
//#define max(a,b) (a>b)?a:b
//#define min(a,b) (a>b)?b:a


using namespace std;

int n;
int k;
int a[1000100];
int b[1000100];
int c[1000100];
int maxMijloc;
int maxFinal;

void citire()
{
    scanf("%d %d",&n,&k);
    int x;
    int y;
    scanf("%d",&y);
    n--;
    for(int i=0;i<n;i++)
    {
        x=y;
        scanf("%d",&y);
        a[i]=y-x;
    }
    for(int i=k-1;i>=0;i--)
        b[i]=max(b[i+1],a[i]);
    for(int i=n-k;i<n;i++)
        c[i]=max(c[i-1],a[i]);
    if(k*2>n)
        maxMijloc=0;
    else
    for(int i=k,m=n-k;i<m;i++)
        maxMijloc=max(maxMijloc,a[i]);
    maxFinal=99999999;
    for(int i=0;i<k;i++)
        maxFinal=min(maxFinal,max(b[i],max(c[n-k+i-1],maxMijloc)));
    if (maxFinal==99999999)
        maxFinal=maxMijloc;
    printf("%d",maxFinal);

}

int main()
{
    freopen("knumere.in","r",stdin);
    freopen("knumere.out","w",stdout);
    citire();
    return 0;
}