Pagini recente » Profil CorinaHolom | Cod sursa (job #293608) | Cod sursa (job #3039110) | Cod sursa (job #3254733) | Cod sursa (job #1493614)
#include <stdio.h>
#include <stdlib.h>
int v[500000], s[500000];
char cf[256];
void init(){
int i;
for(i='0';i<='9';i++)
cf[i]=1;
cf[' ']=2;
cf['-']=2;
}
int main()
{
int n, k, i, max, st, u, p;
FILE*fi,*fo;
fi=fopen("secventa.in","r");
fo=fopen("secventa.out","w");
fscanf(fi,"%d%d", &n, &k);
fgetc(fi);
char c;
int acc=0;
c=fgetc(fi);
i=0;
init();
while(cf[c]>0){
if(c=='-'){
c=fgetc(fi);
acc=-(c-'0');
}
else if(cf[c]==1){
acc*=10;
acc+=c-'0';
}
else{
v[i++]=acc;
acc=0;
}
c=fgetc(fi);
}
v[i]=acc;
for(i=0;i<n;i++)
printf("%d ", v[i]);
st=0;
u=0;
p=0;
for(i=0;i<k;i++){
while(u>st && v[s[u-1]]>=v[i])
u--;
s[u++]=i;
}
max=s[st];
for(i=k;i<n;i++){
if(s[st]==i-k)
st++;
while(u>st && v[s[u-1]]>=v[i])
u--;
s[u++]=i;
if(v[s[st]]>v[max]){
max=s[st];
p=i-k+1;
}
}
fprintf(fo,"%d %d %d", p+1, p+k, v[max]);
fclose(fi);
fclose(fo);
return 0;
}