Pagini recente » Cod sursa (job #2026271) | Cod sursa (job #2004565) | Cod sursa (job #774627) | Solutii preONI 2008, Runda 1 | Cod sursa (job #58944)
Cod sursa(job #58944)
#include <stdio.h>
#define NMAX 500010
#define SORTMAX 100000
#define after 40303
long n, k;
int a[NMAX];
int sort[SORTMAX];
int max, begin, end;
#define sort (sort + after)
void read()
{
int i;
scanf("%ld %ld", &n, &k);
//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] ])
{
ok = 1;
for(i = a[inc]; ok; ++i)
{
if(sort[ i ])
{
min = i;
ok = 0;
}
}
}
++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;
}