Pagini recente » Cod sursa (job #2140234) | Cod sursa (job #487529) | Cod sursa (job #1045198) | Cod sursa (job #1464696) | Cod sursa (job #43658)
Cod sursa(job #43658)
#include <fstream>
#define in "secventa.in"
#define out "secventa.out"
using namespace std;
int n, k;
int sol = -32000, first = 1, last = 0, poz;
int a[500000];
int q[500000];
int main()
{
FILE *fin = fopen( in, "r" );
FILE*fout = fopen( out, "w" );
fscanf( fin, "%d%d", &n, &k );
for(int i = 1; i < k; i++)
{
fscanf( fin, "%d", &a[i] );
while((first <= last) && (a[i] <= a[q[last]])) last--;
q[++last] = i;
}
for(int i = k; i <= n; i++)
{
fscanf( fin, "%d", &a[i] );
while((first <= last) && (a[i] <= a[q[last]])) last--;
q[++last] = i;
while((first<= last) && q[first] <= i-k) first++;
if(a[q[first]] > sol)
{
sol = a[q[first]];
poz = i;
}
}
fprintf( fout, "%d %d %d\n", poz-k+1, poz, sol );
fclose( fin );
fclose( fout );
return 0;
}