Pagini recente » Cod sursa (job #1068980) | Cod sursa (job #1287278) | Cod sursa (job #2108862) | Cod sursa (job #2542792) | Cod sursa (job #183245)
Cod sursa(job #183245)
#include<cstdio>
#include<deque>
#include<fstream>
using namespace std;
#define INPUT "secventa.in"
#define OUTPUT "secventa.out"
#define INFI -32000
//FILE *fin = fopen(INPUT, "r"), *fout = fopen(OUTPUT, "w");
ifstream fin(INPUT);
ofstream fout(OUTPUT);
typedef struct secv
{
int sec;
long poz;
};
long N, K;
deque<secv> DQE;
void readValues()
{
// fscanf(fin, "%ld %ld", &N, &K);
fin >> N >> K;
}
void solveFunction()
{
long Max = INFI, Pinit = -1;
secv Y;
int X;
for(long i = 1; i <= N; ++i)
{
// fscanf(fin, "%d", &X);
fin >> X;
while(!DQE.empty() && DQE.back().sec > X)
DQE.pop_back();
Y.sec = X;
Y.poz = i;
DQE.push_back(Y);
while(!DQE.empty() && DQE.front().poz <= i - K)
DQE.pop_front();
if( i >= K)
{
if(Max < DQE.front().sec)
{
Max = DQE.front().sec;
Pinit = i;
}
}
}
// fprintf(fout, "%ld %ld %ld\n", Pinit - K + 1, Pinit, Max);
fout << Pinit - K + 1 << " " << Pinit << " " << Max << "\n";
}
int main()
{
readValues();
solveFunction();
/* fclose(fin);
fclose(fout);*/
fin.close();
fout.close();
return 0;
}