Cod sursa(job #547483)

Utilizator cristian9Cristian Zloteanu cristian9 Data 6 martie 2011 13:17:43
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
int deque[500001], v[500001];
struct vector{
    int x, y, z;
};
vector u[500001];

int cmp(vector x, vector y){
    return x.z>x.z;
};

int main(){
    freopen ("secventa.in", "r", stdin);
    freopen ("secventa.out", "w", stdout);

    int n, i, k, z=1;

    scanf("%d %d ", &n, &k);

    for(i=1; i<=n; i++)
        scanf("%d ", &v[i]);

    int front=1, back=0;

    for(i=1; i<=n; i++){
        while(front<=back && v[i]<=v[deque[back]])
            back--;
        deque[++back]=i;
        if(deque[front]==i-k)
            front++;
        if(i>=k){
            u[z].x=deque[front];
            u[z].y=deque[front]+k-1;
            u[z++].z=v[deque[front]];
            //printf("%d ", v[deque[front]]);
        }
    }

    sort(u+1, u+z, cmp);
    //for(i=1; i<z; i++)
        printf("%d %d %d\n", u[z-1].x, u[z-1].y, u[z-1].z);
    return 0;
}