Pagini recente » Cod sursa (job #74555) | Cod sursa (job #2290720) | Cod sursa (job #918549) | Cod sursa (job #2792531) | Cod sursa (job #820397)
Cod sursa(job #820397)
#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
struct nr
{
int val, poz;
}c[5000001];
char text[2000000];
int main()
{
ifstream in("secventa.in"); ofstream out("secventa.out");
int n, k, i=1, x, inc=1, sf=1, start, stop, j=0;
int maxim = -30001;
/*string text;*/ in>>n>>k;
in>>x; //getline(in, text);
in.get(text, 2000000); //cout<<text;//stringstream ss(text);
c[1].val = x; c[1].poz = 1;
int l = strlen(text);
while (i < n)
{
//ss>>x;
int minusunu = 1; x = 0;
while (j < l-1 && (text[j] < '0' || text[j] > '9') && text[j] != '-')
j++;
if (text[j] == '-')
{
minusunu = -1;
j++;
}
while (j < l && text[j] >= '0' && text[j] <= '9')
x = x*10 + text[j++]-'0';
x *= minusunu; i++; //cout<<x<<" ";
while (x <= c[sf].val && sf >= inc) sf--;
c[++sf].val = x; c[sf].poz = i;
if (c[inc].poz + k <= i) inc++;
if (i >= k)
if (c[inc].val > maxim)
{
maxim = c[inc].val;
//start = i-k+1;
stop = i;
}
}
out<<stop-k+1<<" "<<stop<<" "<<maxim;
return 0;
}