Pagini recente » Istoria paginii runda/2010_1/clasament | Cod sursa (job #1110064) | Cod sursa (job #2950313) | Cod sursa (job #2784792) | Cod sursa (job #962851)
Cod sursa(job #962851)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
int n,k,a[500005],q[500005],st,dr,d1,d2,mx=-30005;
long long sol=0;
void Parse()
{ char c,c2; int nr=0,pas=0,semn=1;
while(!f.eof())
{ f.get(c);
if (c>=48 && c<=57) nr=nr*10+(c-'0');
else
{ if (c=='-') semn=-1;
if (c2>='0' && c2<='9')
{pas++; nr*=semn;
if (pas==1) n=nr; else if (pas==2) k=nr;
else if (pas>2) a[pas-2]=nr;
semn=1;
} nr=0;
}
c2=c;
}
}
int main()
{ int i;
Parse();
for(i=1;i<=n;i++)
{ while(st<=dr && a[i]<a[q[dr]]) dr--;
dr++; q[dr]=i;
while(q[st]<=i-k) st++;
if (i>=k)
{ if (a[q[st]]>mx) {mx=a[q[st]]; d1=i; d2=d1-k+1;} }
}
g<<d2<<" "<<d1<<" "<<mx;
//cout<<n<<" "<<k<<"\n";
//for(i=1;i<=n;i++) cout<<a[i]<<" ";
return 0;
}