Pagini recente » Cod sursa (job #1178222) | Cod sursa (job #329678) | Cod sursa (job #2672535) | Cod sursa (job #3201771) | Cod sursa (job #1515010)
# include <iostream>
# include <fstream>
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
int a[500001], c[500001];
char sir[500001];
int main()
{
int n, k, s, d, maxi=-32001, i, prim, ulti;
f>>n>>k;
f.get();
f.getline(sir, 500001, EOF);
int semn, ct=0;
for (i=0; sir[i]; i++)
{
semn=1;
if (sir[i]=='-')
{
semn=-1;
i++;
}
if (isdigit(sir[i]))
{
++ct;
for (; isdigit(sir[i]); i++)
a[ct]=a[ct]*10+(sir[i]-'0');
a[ct]*=semn;
}
}
i=1;
prim=1; ulti=0;
while (i<=n)
{
while (prim<=ulti && a[i]<a[c[ulti]])
ulti--;
c[++ulti]=i;
while (c[prim]<=i-k)
prim++;
if (i>=k)
{
if (a[c[prim]]>maxi)
{
maxi=a[c[prim]];
s=i-k+1;
d=i;
}
else
if (a[c[prim]]==maxi && c[prim]<s)
{
s=i-k+1;
d=i;
}
}
i++;
}
g<<s<<' '<<d<<' '<<maxi;
return 0;
}