Pagini recente » Cod sursa (job #487456) | Monitorul de evaluare | Cod sursa (job #2625159) | Cod sursa (job #1251022) | Cod sursa (job #2146868)
#include <bits/stdc++.h>
const int MAX_N = 500005;
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int n, k, a[MAX_N];
deque<int>q;
char s[5*MAX_N];
int main()
{
int i, maxi=-0x7fffffff, p, u, j, semn;
fin>>n>>k;
fin.get();
fin.getline(s, sizeof(s));
j=0;
for(i=1; i<=n; i++) {
semn=1;
if(s[j]=='-') {
semn=-1;
j++;
}
while(s[j]>='0' && s[j]<='9') {
a[i]=a[i]*10+s[j]-'0';
j++;
}
a[i]*=semn;
j++;
}
for(i=1; i<=n; i++) {
while(!q.empty() && a[i]<a[q.back()])
q.pop_back();
q.push_back(i);
if(q.front()==i-k)
q.pop_front();
if(maxi<a[q.front()] && i>=k) {
maxi=a[q.front()];
p=i-k+1;
u=i;
maxi=a[q.front()];
}
}
fout<<p<<" "<<u<<" "<<maxi<<'\n';
return 0;
}