Cod sursa(job #733186)

Utilizator vendettaSalajan Razvan vendetta Data 11 aprilie 2012 16:27:43
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#include <deque>
#define nmax 1000005

using namespace std;

ifstream f("knumere.in");
ofstream g("knumere.out");

int n, k;
long long a[nmax];
deque<int> dq;
long long rez = -1000000001LL;

void citeste(){

    f >> n >> k;
    k = n-k-1;

    for(int i=1; i<=n; i++){
        f >> a[i];
        if (i==1) continue;
        a[i-1] = a[i] - a[i-1];
    }

}

void rezolva(){

    for(int i=1; i<n; i++){
        while(dq.size() && a[i] > a[dq.back()]) dq.pop_back();
        dq.push_back(i);
        if (i>k && dq.size()) dq.pop_front();
        if (i>=k)rez = max(rez, a[dq.front()]*1LL);
    }

    g << rez << "\n";

}

int main(){

    citeste();
    rezolva();

    f.close();
    g.close();

    return 0;

}