Pagini recente » Mihnea Andreescu | Cod sursa (job #2904925) | Cod sursa (job #840192) | Cod sursa (job #1174868) | Cod sursa (job #1549643)
#include <fstream>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int n,k,i,j,minim,maxim,ok,v[500001],p,u,d[500001], semn, val, m;
char s[40000000];
int main()
{
fin>>n>>k;
fin.get();
fin.get(s, 40000000);
semn = 1;
for (i=0;s[i]!=0;i++) {
if (s[i] == '+') {
semn = 1;
continue;
}
if (s[i] == '-') {
semn = -1;
continue;
}
if (s[i] >= '0' && s[i] <= '9') {
val = val*10 + s[i]-'0';
continue;
}
if (s[i] == ' ' && ( s[i-1] >= '0' && s[i-1] <= '9' )) {
m++;
v[m] = val;
val = 0;
semn = 1;
}
}
v[++m] = val;
for(i=1;i<=n;i++){
fin>>v[i];
}
p = 1;
u = 0;
maxim = -30010;
for (i=1;i<=n;i++) {
while (p<=u && v[i] <= v[ d[u] ])
u--;
d[++u] = i;
if (i-d[p] == k)
p++;
if(i>=k)
if (v[ d[p] ] > maxim ){
maxim=v[d[p]];
ok = i;
}
}
fout<<ok-k+1<<" "<<ok<<" "<<maxim;
return 0;
}