Pagini recente » Cod sursa (job #2533098) | Cod sursa (job #2063789) | Cod sursa (job #442826) | Monitorul de evaluare | Cod sursa (job #2036353)
#include <fstream>
#define maxn 500001
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
int n, k;
int A[maxn], Deque[maxn],mini=0,lu;
char s[maxn*7];
int main()
{ f>>n>>k;
f.get();
f.getline(s, sizeof(s));
int i=0;
for(int l=1; l<=n; l++)
{ int semn=1;
while(s[i]!=' ' && s[i])
{
if(s[i]=='-')
{
semn=-1;
i++;
}
A[l]=A[l]*10+s[i]-'0';
i++;
}
i++;
A[l]*=semn;
}
int Front = 1, Back = 0;
A[0]=-300001;
for (int i = 1; i <= n; i++)
{
while (Front <= Back && A[i] <= A[ Deque[Back] ]) Back--;
Deque[++Back] = i;
if (Deque[Front] == i-k) Front++;
if (i >= k) if(A[ Deque[Front]]>A[mini]) {mini=Deque[Front]; lu=i;}
}
g<<lu-k+1<<' '<<lu<<' '<<A[mini];
g.close(); return 0;
}