Pagini recente » Cod sursa (job #351192) | Cod sursa (job #62371) | Cod sursa (job #41155) | Cod sursa (job #1338702) | Cod sursa (job #2071959)
#include <fstream>
#include <cstring>
const int N=500000;
using namespace std;
ifstream in("secventa.in");
ofstream out("secventa.out");
char s[N*8];
int v[N];
int d[N];
int main()
{
int k,val,n,l,i,semn=1,a=0,S,st=0,dr=-1,x,y;
in>>n>>k>>ws;
in.getline(s,7*N+1);
val=0;
n=0;
l=strlen(s);
for(int i=0 ; i<l ; i++)
{
if(isdigit(s[i]))
{
val=val*10+(s[i]-'0');
}
else if(s[i]==' ')
{
v[n++]=val*semn;
val=0;
semn=1;
}
else
{
semn=-semn;
}
}
S=0;
v[n++]=val*semn;
for(i=0 ; i<n ; i++)
{
S++;
while(st<=dr && v[i]<=v[d[dr]])
{
dr--;
}
d[++dr]=i;
if(st<=dr && d[st] == i - k)
{
st++;
}
//out << i - k + 2 << " " << i + 1 << " -> " << v[d[st]] << "\n";
if(i >= k - 1 && a < v[d[st]])
{
a=v[d[st]];
x = i - k + 1;
y = i;
}
}
out<<x + 1<<" "<<y + 1<<" "<<a;
return 0;
}