Cod sursa(job #316453)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 19 mai 2009 19:58:50
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <cstdio>
#include <deque>
#define N 8192
using namespace std;
char buffer[N];
int bi;
deque<pair<int,int> > d;
int k,n;
int citire()
{int x=0;
 if(bi==0)
 {fgets(buffer,N,stdin);
 }
 for (;buffer[bi]!=' ';bi++)
 {if(bi>=N)
  {fgets(buffer,N,stdin);
   bi=0;
  }
  x=x*10+buffer[bi]-'0';
 }
 bi++;
 return x;
}
int main ()
{register int i,x,max=-40000,pmax;
 freopen("secventa.in","r",stdin);
 freopen("secventa.out","w",stdout);
 scanf("%d %d",&n,&k);
 for (i=1;i<k;i++)
 {scanf("%d",&x);
  while(!d.empty() && x<d.front().first)
  {d.pop_front();
  }
  d.push_front(pair<int,int>(x,i));
 }
 for (;i<=n;i++)
 {scanf("%d",&x);
  if(i-d.back().second>=k)
  {d.pop_back();
  }
  while(!d.empty()&&x< d.front().first)
  {d.pop_front();
  }
  d.push_front(pair<int,int>(x,i));
  if(max<d.back().first)
  {max=d.back().first;
   pmax=i;
  }
 }
 printf("%d %d %d",pmax-k+1,pmax,max);
 return 0;
}