Cod sursa(job #1781026)

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