Cod sursa(job #1510041)

Utilizator nnnmmmcioltan alex nnnmmm Data 24 octombrie 2015 15:07:26
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<cstdio>
#include<deque>
#include<cctype>
#include<cstring>
std::deque<int> coada;
int V[500007];
char sir[4000007];
int main()
{
 freopen("secventa.in","r",stdin);
 freopen("secventa.out","w",stdout);
 int n,k,max=-30001,rasp;
 scanf("%d %d ",&n,&k);
 gets(sir);
 int q=0,MAX=strlen(sir);
 for(int i=1;i<=n;i++)
     {
      int a=0,minus=1;
      if(sir[q]=='-')
         minus=-1,q++;
      while(isdigit(sir[q]) && q<=MAX)
            {
             a=a*10+(sir[q]-'0');
             q++;
            }
      q++;
      a*=minus;
      V[i]=a;
     }
 for(int i=1;i<=n;i++)
     {
      while(!coada.empty() && i-coada.front()>=k)
            coada.pop_front();
      while(!coada.empty() && V[coada.back()]>V[i])
            coada.pop_back();
      coada.push_back(i);
      if(i>=k)
         {
          if(V[coada.front()]>max)
             {
              max=V[coada.front()];
              rasp=i;
             }
         }
     }
 printf("%d %d %d ",rasp-k+1,rasp,max);
 fclose(stdin);
 fclose(stdout);
return 0;
}