Pagini recente » Cod sursa (job #1071301) | Cod sursa (job #2946422) | Cod sursa (job #1334887) | Cod sursa (job #2550579) | Cod sursa (job #42782)
Cod sursa(job #42782)
/*
Nume: Cipri Filipas
Problema: Secventa infoarena
*/
#include <stdio.h>
#include <deque>
#include <vector>
using namespace std;
void Read();
void Write();
void Solve();
int minim(int st, int dr);
vector<int> a;
deque<int> q;
int n, k, p, pos, init, fin;
FILE* fout = fopen("secventa.out", "wt");
int main()
{
Read();
Solve();
Write();
return 0;
}
void Read()
{
FILE* fin = fopen("secventa.in", "rt");
fscanf(fin, "%d %d", &n, &k);
//q.resize(k+1);
a.resize(n+1);
for(int i = 0; i < n; i++)
fscanf(fin, "%d", &a[i]);
fclose(fin);
}
void Solve()
{
for(int i = 0; i < k; i++)
q.push_back(a[i]);
p = minim(0, k-1);
for(int i = 1; i < n; i++)
{
/*i = pos;
pos = 0;*/
if(i+k-1 < n)
{
q.pop_front();
q.push_back(a[i+k-1]);
if(p < minim(i, i+k-1))
{
/*for(int j = 0; j < k; j++)
fprintf(fout, "%d ", q[j]);
fprintf(fout, "\n");*/
init = i+1;
fin = i + k;
p = minim(i, i+k-1);
//fprintf(fout, "%d\n", p);
}
}
}
}
void Write()
{
fprintf(fout, "%d %d %d", init, fin, p);
fclose(fout);
}
int minim(int st, int dr)
{
int minim = 10000000;
for(int i = st; i <= dr; i++)
{
if(a[i] < minim)
{
minim = a[i];
//pos = i;
}
}
return minim;
}