Cod sursa(job #1780978)

Utilizator lauratalaatlaura talaat lauratalaat Data 16 octombrie 2016 17:06:57
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include<stdio.h>
#include<deque>
using namespace std;
deque<int>d1,d2;
int main(){
    int n,k,max,nr,i,inc,sf;
    char c1,c2,c;
    freopen("secventa.in","r",stdin);
    freopen("secventa.out","w",stdout);
    scanf("%c%c%c%c",&c1,&c,&c2,&c);
    n=c1-'0';
    k=c2-'0';
    max=-999999999;
    scanf("%c%c",&c1,&c2);
    if(c1=='-'){
        nr=(c2-'0')*(-1);
        scanf("%c",&c);
    }
    else
        nr=c1-'0';
    d1.push_front(nr);
    d2.push_front(1);
    for(i=2;i<=n;i++){
         scanf("%c%c",&c1,&c2);
         if(c1=='-'){
            nr=(c2-'0')*(-1);
            scanf("%c",&c);
        }
        else
            nr=c1-'0';
        while(!d1.empty()&&nr<d1.back()){
            d1.pop_back();
            d2.pop_back();
        }
        d1.push_back(nr);
        d2.push_back(i);
        if(i>=k){
            while(d2.back()-d2.front()+1>k){
                d1.pop_front();
                d2.pop_front();
            }
            if(d1.front()>max){
                max=d1.front();
                inc=i-k+1;
                sf=i;
            }
        }
    }
    printf("%d %d %d\n",inc,sf,max);
    return 0;
}