Cod sursa(job #1537615)

Utilizator dn995Diaconu dn995 Data 27 noiembrie 2015 16:30:03
Problema Secventa Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("secventa.in");
ofstream o("secventa.out");
struct Nod{
    Nod *ls,*ld;
    int poz,val;
    Nod(int myVal,int myPoz,Nod* myLs=NULL,Nod* myLd=NULL){
        poz=myPoz;
        val=myVal;
        ls=myLs;
        ld=myLd;
    }
};

int main()
{
    int i,k,n,value,poz,maxim,pozMax;
    Nod *p,*start,*finish;
    f>>n>>k;
    f>>value;
    start=new Nod(value,1);
    finish=start;
    maxim=-400000;
    pozMax=1;
    for(i=2;i<=n;i++){
        f>>value;
        poz=i;
        p=finish;

        while(p != start and p->val>value){
            p=p->ls;
        }
        if(p == start and p->val>value){
            finish=new Nod(value,poz);
            start=finish;
        }else{
            finish=new Nod(value,poz,p);
            p->ld=finish;
        }

        if(start->poz+k==finish->poz)
            start=start->ld;

        if(start->val>maxim and (finish->poz-k+1)>0){
            maxim=start->val;
            pozMax=finish->poz;
        }
    }
    o <<pozMax-k+1<<" "<<pozMax<<" "<<maxim;
    return 0;
}