Pagini recente » Cod sursa (job #1048865) | Cod sursa (job #1819831) | Cod sursa (job #2390048) | Cod sursa (job #1915351) | Cod sursa (job #2565307)
#include <iostream>
#include <fstream>
#include <queue>
#define INF 999999
#define MINF -999999
using namespace std;
typedef struct sequence
{
int n = 0;
deque < int > numbers;
int base = INF;
}seq;
typedef struct result
{
int start = 0;
int finish = 0;
int base = MINF;
}res;
ifstream fin;
ofstream fout;
int n, k;
void insertNrInSeq(int number, seq &seq)
{
seq.numbers.push_back(number);
if (number < seq.base)
seq.base = number;
}
void writeSeq(seq seq)
{
while(seq.n > 0)
{
seq.n--;
cout << seq.numbers.front() << " ";
seq.numbers.pop_front();
}
cout << '\n';
}
int findBase(seq seq)
{
int base = INF;
while(seq.n > 0)
{
seq.n--;
if (seq.numbers.front() < base)
base = seq.numbers.front();
seq.numbers.pop_front();
}
return base;
}
void updateResult(res &res, seq seq, int start, int finish)
{
if (seq.base > res.base)
{
res.base = seq.base;
res.start = start;
res.finish = finish;
}
}
int main() {
fin.open("secventa.in");
fout.open("secventa.out");
fin >> n >> k;
seq seq;
res res;
writeSeq(seq);
for (int i = 1; i <= n; i++)
{
int number;
fin >> number;
if (seq.n < k)
{
seq.n++;
insertNrInSeq(number, seq);
//writeSeq(seq);
} else {
seq.numbers.push_back(number);
seq.numbers.pop_front();
seq.base = findBase(seq);
writeSeq(seq);
}
updateResult(res, seq, i-2, i);
//cout << seq.base << '\n';
}
fout << res.start << " " << res.finish << " " << res.base;
fin.close();
fout.close();
return 0;
}