Pagini recente » Cod sursa (job #831563) | Cod sursa (job #464949) | Cod sursa (job #2827618) | Cod sursa (job #542415) | Cod sursa (job #66729)
Cod sursa(job #66729)
#include <stdio.h>
#include <string.h>
#define NMAX 500010
#define SORTMAX 70000
#define after 30303
long n, k;
int a[NMAX];
int sort[SORTMAX];
int max, begin, end;
char c[NMAX*15];
#define sort (sort + after)
void read()
{
int i, h;
scanf("%ld %ld\n", &n, &k);
///*
fgets(c, NMAX*15, stdin);
for(i = 0, h = 1; c[i] != NULL;)
{
if(c[i] == '-')
{
a[h] = -(c[i+1]-'0');
i += 2;
}
else if(c[i] >= '0' && c[i] <= '9')
{
if(a[h] >= 0)
a[h] = a[h]*10 + (c[i]-'0');
else
a[h] = a[h]*10 - (c[i]-'0');
++i;
}
else
++h, ++i;
}
//..*/
//for(i = 1; i <= n; ++i)
// scanf("%d ", &a[i]);
}
void solve()
{
int i;
int inc, sf, ok;
int min = 32000;
//int h = 1;
for(inc = sf = 1; sf <= k; ++sf)
{
//scanf("%d ", &a[h++]);
++sort[ a[sf] ];
if(min > a[sf])
{
min = a[sf];
}
}
max = min;
begin = 1;
end = --sf;
//scanf("%d ", &a[h++]);
while(sf+1 <= n)
{
//scanf("%d ", &a[h++]);
++sort[ a[++sf] ];
if(min > a[sf])
min = a[sf];
--sort[ a[inc] ];
if((a[inc] == min) && !sort[ a[inc] ])
{
for(i = a[inc]; ; ++i)
{
if(sort[ i ])
{
min = i;
break;
}
}
}
++inc;
if(min > max)
{
max = min;
begin = inc;
end = sf;
}
}
}
int main()
{
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
read();
solve();
printf("%d %d %d\n", begin, end, max);
fclose(stdin);
fclose(stdout);
return 0;
}