Cod sursa(job #1576538)

Utilizator Alex.PAlexandru Pacurar Alex.P Data 22 ianuarie 2016 15:48:43
Problema Secventa Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <stdio.h>
#include <stdlib.h>
#include <deque>

using namespace std;

deque<int> d;
deque<int> p;

int main()
{
    FILE *fin, *fout;
    int n,k,x,maxim,poz,i;
    fin=fopen("secventa.in","r");
    fout=fopen("secventa.out","w");
    fscanf(fin,"%d%d",&n,&k);
    fscanf(fin,"%d",&x);
    d.push_back(x);
    p.push_back(0);
    for(i=1;i<k;i++){
        fscanf(fin,"%d",&x);
        while(d.empty()==0 && d.back()>x){
            d.pop_back();
            p.pop_back();
        }
        d.push_back(x);
        p.push_back(i);
    }
    maxim=d.front();
    for(i;i<n;i++){
        if(p.front()==i-k){
            d.pop_front();
            p.pop_front();
        }
        fscanf(fin,"%d",&x);
        while(d.empty()==0 && d.back()>x){
            d.pop_back();
            p.pop_back();
        }
        d.push_back(x);
        p.push_back(i);
        if(maxim<d.front()){
            maxim=d.front();
            poz=i;
        }
    }
    fprintf(fout,"%d %d %d",poz-k+2,poz+1,maxim);
    fclose(fin);
    fclose(fout);
    return 0;
}