Cod sursa(job #2205114)

Utilizator canmihaiCancescu Mihai canmihai Data 17 mai 2018 23:14:26
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <iostream>
#include <fstream>
#define m 5000010
int n,k,v[m],d[m],maxim=-m,pm,ver,oriz,in=1,semn,t;
char cifre[31000][6];
long long sum;
using namespace std;
int main() {
    ifstream fin("secventa.in");
    ofstream fout("secventa.out");
    fin>>n>>k;
   while(fin>>noskipws>>cifre[ver][oriz++]){
        if(cifre[ver][oriz-1]==' ' || (+cifre[ver][oriz-1])==10){
            ver++;
            oriz=0;
        }
        //cout<<cifre[ver][oriz];
    }
    for(int i=1;i<ver;i++){
        if(cifre[i][0]=='-'){
            semn=-1;
            t=1;
        }
        else{
            t=0;
            semn=1;
        }
        for(;;t++){
            if(+cifre[i][t]==10)
                break;
            if(cifre[i][t]!=' ')
                v[in]=v[in]*10+(cifre[i][t]-'0');
            else
                break;
        }
        v[in]*=semn;
        in++;

    }

    int cap=1,coada=0;
    for(int i=1;i<=n;i++){
        cout<<v[i]<<" ";
        while(cap<=coada && v[i]<v[d[coada]])
            coada--;
        d[++coada]=i;
        if(d[cap]==i-k)
            cap++;
        if(i>=k)
            if(maxim<v[d[cap]]){
                maxim=v[d[cap]];
                pm=i;
            }


    }

    fout<<pm-k+1<<" "<<pm<<" "<<maxim;




    return 0;
}