Pagini recente » Cod sursa (job #2024271) | Istoria paginii utilizator/olarasuloredana | Diferente pentru home intre reviziile 525 si 524 | Cod sursa (job #1100079) | Cod sursa (job #789964)
Cod sursa(job #789964)
#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;
deque<int>q;
int main()
{
maxim = -31000;
fin>>n>>k;
fin.get();
int x = 1;
while ( fin.get(s))
{
if ( s == '-')
{
semn[x] = -1;
}
else if ( s ==' ')
{
a[x] *= semn[x];
x++;
semn[x] = 1;
}
else if ( s <='9' && s >='0')
{
a[x] = a[x]*10+s-'0';
}
}
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;
}