Cod sursa(job #1387209)

Utilizator azkabancont-vechi azkaban Data 13 martie 2015 20:10:11
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>
#define Nmax 500013
using namespace std;
deque <int> Dq;
int i,n,aux,k,maxim(-1<<15),sol1;
int 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),pivot(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 (i>=k)
         {
         ++pivot;
         if (maxim<A[Dq.front()])
	         { 
             maxim=A[Dq.front()];
             sol1=i;
             }  
		while (!Dq.empty() && pivot>=Dq.front()) Dq.pop_front();    
	     }
    }
  cout<<sol1-k+1<<" "<<sol1<<" "<<maxim;
 return 0;
}