Cod sursa(job #1203094)

Utilizator azkabancont-vechi azkaban Data 30 iunie 2014 17:34:21
Problema Secventa Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.62 kb
#include <fstream>
#include<cstdio>
#include<cstring>
#include <deque>
using namespace std;
FILE *cin = fopen("secventa.in","r");
    ofstream cout("secventa.out");
deque <int> Dq;
int i,n,aux,k,maxim(-999999),sol1,A[500013]; 
char buffer[1<<30];

int main()
{
 long long best = -(1<<30);
 fscanf(cin,"%d%d\n",&n,&k);
 fgets(buffer,1<<30,cin);
 int semn(1),aux(0),ind(0);
 for(int i=0;i<strlen(buffer);i++){
                                   if(buffer[i] == '-') semn=-1;
                                                 else 
                                   if(buffer[i] != ' ') aux=aux*10+buffer[i]-'0';
                                   if(buffer[i] == ' ' || buffer[i] == '\n'){
                                                                             A[++ind]=aux*semn;
                                                                             aux=0;
                                                                             semn=1;
                                                                            }
                                  }
  for(i=1;i<=n;i++){
                     while(!Dq.empty() && A[i]<=A[Dq.back()]) Dq.pop_back();
                     Dq.push_back(i);
                     if (!Dq.empty() && i-k==Dq.front()) Dq.pop_front();
                     if (maxim<A[Dq.front()] && i>=k){ 
                                                      maxim=A[Dq.front()];
                                                      sol1=i;
                                                     }                  
                  }
  cout<<sol1-k+1<<" "<<sol1<<" "<<maxim;
 return 0;
}