Cod sursa(job #1583723)

Utilizator ruxi.icleanuRuxandra Icleanu ruxi.icleanu Data 29 ianuarie 2016 11:38:42
Problema Secventa Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>
#include <stdlib.h>
#include <deque>

std::deque <int> val, poz;

using namespace std;

int main()
{
    int n, k, nr, i, bmax, pozmax;
    FILE *fi, *fo;
    fi = fopen("secventa.in", "r");
    fo = fopen("secventa.out", "w");
    fscanf(fi, "%d%d", &n, &k);
    bmax=-30000;
    for(i=1; i<=n; i++) {
        fscanf(fi, "%d", &nr);
        if(val.empty()!=1 && i-poz.front()>=k) {
            val.pop_front();
            poz.pop_front();
        }
        while(val.empty()!=1 && nr<=val.back()) {
            val.pop_back();
            poz.pop_back();
        }
        val.push_back(nr);
        poz.push_back(i);

        if(i>=k)
            if(bmax<val.front()) {
                bmax=val.front();
                pozmax=i;
            }
    }
    fprintf(fo, "%d %d %d", pozmax-k+1, pozmax, bmax);
    fclose(fi);
    fclose(fo);
    return 0;
}