Pagini recente » Cod sursa (job #2336421) | Cod sursa (job #382128) | Cod sursa (job #1258562) | Cod sursa (job #2789989) | Cod sursa (job #842336)
Cod sursa(job #842336)
#include <fstream>
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#include <string.h>
#include <vector>
#include <queue>
using namespace std;
int main()
{
FILE *fin=fopen("secventa.in","r");
FILE *fout=fopen("secventa.out","w");
deque<int> deq;
int v[500001], i, k, n, max_min, poz;
//Read
fscanf(fin,"%d %d",&n,&k);
for(i=1; i<=n; i++)
fscanf(fin,"%d",&v[i]);
//Compute
for(i=1; i<=k; i++)
{
while(!deq.empty() && v[deq.back()] > v[i])
deq.pop_back();
deq.push_back(i);
}
max_min = v[deq.front()];
for(i=k+1; i<=n; i++)
{
while(!deq.empty() && v[deq.front()] > v[i])
deq.pop_back();
deq.push_back(i);
if(deq.front() == i-k)
deq.pop_front();
if(max_min < v[deq.front()])
{
max_min = v[deq.front()];
poz = i;
}
}
//Print
fprintf(fout,"%d %d %d",poz-k+1,poz,max_min);
}