Cod sursa(job #820893)

Utilizator sorincusmareIacob Sorin sorincusmare Data 21 noiembrie 2012 12:37:00
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include<stdio.h>

#define N 100000

using namespace std;
/*
ifstream f("pod.in");
ofstream h("pod.out");
*/
int n,i,v[N],p,x,b;
int h;

void afis(int r){
    int i,u;
    for(i=2;i<=r;i++)
        if(v[i]-v[u]<r)
            h = 1;
        else {
            h ^= h;
            u=i;
        }
}
bool se_poate(int d){
    int u=1,l,nr=0;
    for(l=2;l<=x;l++){
        if(v[l]-v[u]<d)
            continue;
        nr++;
        u=l;
        if(nr==p)
            return true;
    }
    return false;
}
int ch(){
    int j,pas=1<<23;
    for(j=0;pas;pas/=2)
        if(se_poate(i+pas))i+=pas;
    return i;
}

int main()
{
    freopen("afis.in","r",stdin);
    freopen("afis.out","w",stdout);
    scanf("%d%d%d",&n, &p, &x);
    //f>>n>>p>>x;
    for(i=1;i<=x;i++){
        //f>>v[i];
        scanf("%d",&v[i]);
    }
    ch();
    afis(x);
    return 0;
}