Pagini recente » Cod sursa (job #3210480) | Cod sursa (job #1102640) | Cod sursa (job #470633) | Cod sursa (job #1527948) | Cod sursa (job #2047259)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int dq[500005];
char s[2550000];
int n,t;
int find_minim(int a,int b)
{
int q=100000;
for (int i=a;i<=b;i++) {
if (dq[i]<q) q=dq[i];
}
return q;
}
void parse_1()
{
int i=0;
while (s[i]>='0' && s[i]<='9') {
n=n*10+s[i]-'0';
i++;
}
i++;
while (s[i]>='0' && s[i]<='9') {
t=t*10+s[i]-'0';
i++;
}
}
void parse_2()
{
int k=0,x; //parsare
bool neg=false;
// lucru
int minim=100000;
int st,dr;
st=1;
dr=0;
int i0,i1,min_max=-50000;
for (int i=1;i<=n;i++) {
x=0;
if (s[k]=='-') {neg=true;k++;}
while (s[k]>='0' && s[k]<='9') {
x=x*10+s[k]-'0';
k++;
}
if (neg) x=-x;
k++;
neg=false;
if (dr-st<t) {
dq[++dr]=x;
if (minim>x) minim=x;
}
else {
dq[++dr]=x;
if (x>dq[st]) {
while (dr-st>=t && x>dq[st]) {
if (dq[st]==minim) {
minim=find_minim(st+1,dr);
}
st++;
}
}
}
if ((dr-st>=i1-i0 && dr-st>=t) || min_max<minim) {
i0=st;
i1=dr;
min_max=minim;
}
}
fout<<i0<<' '<<i1<<' '<<min_max;
}
int main()
{
fin.get(s,'\n');
parse_1();
fin>>ws;
fin.get(s,2550000);
parse_2();
}