Pagini recente » Cod sursa (job #523976) | Cod sursa (job #2486753) | Cod sursa (job #723092) | Cod sursa (job #448919) | Cod sursa (job #2807918)
#include <iostream>
#include <queue>
using namespace std;
int n, k, maxx, v[500005], poz;
deque<int> dq;
FILE* fin, * fout;
int main()
{
fin = fopen("secventa.in", "r");
fout = fopen("secventa.out", "w");
fscanf(fin, "%d %d", &n, &k);
maxx = -9999999;
poz = 1;
for ( int i = 1; i <= n; i++ )
fscanf(fin, "%d", &v[i]);
for ( int i = 1; i <= n; i++ )
{
while ( !dq.empty() && (dq.front() + k) <= i )
dq.pop_front();
while ( !dq.empty() && v[dq.back()] >= v[i] )
dq.pop_back();
dq.push_back(i);
if ( i >= k && v[dq.front()] > maxx )
{
maxx = v[dq.front()];
poz = i - k + 1;
}
}
// fout << poz << " " << poz + k - 1 << " " << maxx;
fprintf(fout, "%d %d %d", poz, poz + k - 1, maxx);
}