Cod sursa(job #121793)

Utilizator savimSerban Andrei Stan savim Data 9 ianuarie 2008 20:26:10
Problema Secventa Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdio.h>
int main()
{
    int max,min,na,p,p1,p2,i,j,k,n;
	int a[500001];
    
    freopen("secventa.in","r",stdin);
    freopen("secventa.out","w",stdout);
    
    min=31000;na=0;
    scanf("%d %d",&n,&k);
    for (i=1; i<=n; i++)
    {
        scanf("%d",&a[i]);
        if (a[i]<min) 
        {
           min=a[i];
           na=1;
        }
        else if (a[i]==min) na++;
    }        
    
    max=min;p1=1;p2=k;
    
    for (p=k+1; p<=n; p++)
    {
        if (a[p]<min) 
        {
           min=a[p];   
           na=1;
        }
		else
		if (a[p-k]==min)
		{
			na--;
			if (na==0)
			{
			   min=30001;
			   for (j=p-k+1; j<=p; j++)
				   if (a[j]<min)
				   {
					  min=a[j];
					  na=1;
				   }
				   else if (a[j]==min) na++;
			}
			if (min>max)
			{
			   max=min;
			   p1=p-k+1;
			   p2=p;
			}
		}
	}
	
	printf("%d %d %d\n",p1,p2,max);
    
    
    
    return 0;    
}