Cod sursa(job #1203099)

Utilizator azkabancont-vechi azkaban Data 30 iunie 2014 17:42:05
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <fstream>
#include<cstdio>
#include<cstring>
#include <deque>
#define Nmax 500000
using namespace std;

deque <int> Dq;
int i,n,aux,k,maxim(-1<<15),sol1,A[500013]; 
char buffer[10*Nmax];

int main()
{
 FILE *cin = fopen("secventa.in","r");
 ofstream cout("secventa.out");
 fscanf(cin,"%d%d\n",&n,&k);
 fgets(buffer,10*Nmax,cin);
 int semn(1),aux(0),i(0);
 long long size=strlen(buffer);
 for(int j=0;j<size;++j){
                         if(buffer[j] == '-') semn=-1;
                                       else 
                         if(buffer[j] != ' ') aux=aux*10+buffer[j]-'0';
                         if(buffer[j] == ' ' || buffer[j] == '\n'){
                                                                  A[++i]=aux*semn;
                                                                  aux=0;
                                                                  semn=1;
                                                                  }
                         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;
}