Cod sursa(job #913033)

Utilizator CostanMiriamCostan Miriam CostanMiriam Data 13 martie 2013 08:08:50
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
using namespace std;
ofstream fout ("secventa.out");
ifstream fin ("secventa.in");
//FILE *fin = fopen("secventa.in","r");
//FILE *fout = fopen("secventa.out","w");

int n,k,front,back,i,d[500010];
int v[500010],maxim,inceput;
 
int main () {
 
    fin>>n>>k;
    //fscanf(fin,"%d%d",&n,&k);
    for (i=1;i<=n;i++) fin>>v[i];
       //fscanf(fin,"%d",&v[i]);
 
    front = 1; back = 0; maxim=-30010;
 
    for (i=1;i<=n;i++) {
 
        while (front<=back && v[i] <= v[d[back]]) back --;
 
        d[++back]= i;
 
        if (i - d[front] == k)
            front ++;
 
        if (i>=k)
            if (v[d[front]] > maxim) {
                maxim=v[d[front]];
                inceput=i;
            }
    }
	//fprintf(fout,"%d ",inceput-k+1);
	//fprintf(fout,"%d ",inceput);
	//fprintf(fout,"%d\n",maxim);
 
    fout << inceput-k+1 << " " << inceput << " " << maxim << "\n";
 
    return 0;
}