Pagini recente » Cod sursa (job #1329112) | Cod sursa (job #150076) | Cod sursa (job #1382391) | Cod sursa (job #1067643) | Cod sursa (job #789942)
Cod sursa(job #789942)
#include <fstream>
#include <queue>
#include <cstring>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int a[500001], maxim, semn[500001];
int k, n, i, y;
char s[1110001];
deque<int>q;
int main()
{
maxim = -31000;
fin>>n>>k;
fin.get();
fin.getline(s,11100001);
int m = strlen(s);
int x = 1;
semn[1] = 1;
while (i<m)
{
if ( s[i] == ' ')
{
x++;
semn[x] = 1;
i++;
}
else if ( s[i] == '-')
{
semn[x] = -1;
i++;
}
else while ( s[i] <= '9' && s[i] >= '0')
{
a[x] = a[x]*10+(s[i]-48);
i++;
}
a[x] *= semn[x];
}
for (i=1;i<=n;i++)
{
while (!q.empty() && a[q.back()]>=a[i])
{
q.pop_back();
}
q.push_back(i);
if (q.front()==i-k)
{
q.pop_front();
}
if (i >= k && a[q.front()] > maxim )
{
maxim=a[q.front()];
y=i;
}
}
fout<<y-k+1<<" "<<y<<" "<<maxim<<"\n";
return 0;
}