Cod sursa(job #18247)

Utilizator supernovaMihai Pantis supernova Data 18 februarie 2007 11:00:53
Problema Tricouri Scor 20
Compilator c Status done
Runda preONI 2007, Runda 2, Clasa a 9-a si gimnaziu Marime 1.2 kb
#include <stdio.h>

int a[400000];

void sort(int n)
{
	int i,j,aux;

	for(i=0;i<n;i++)
		for(j=0;j<i;j++)
			if(a[j]<a[i]) { aux=a[j];a[j]=a[i];a[i]=aux;}
}

int min(int a, int b)
{
	return a>b?b:a;
}

int main(void)
{
	int i,j,n,k,teste,p,nr,sum=0,bestsum,i1,i2,i3,i4,i5,s2,s3,s4,s5,f2,f3,f4,f5,time;
	FILE *f=fopen("tricouri.in","r");
	FILE *fout=fopen("tricouri.out","w");
	
	fscanf(f,"%d %d",&n,&teste);
	for(i=0;i<n;i++) fscanf(f,"%d",&a[i]); a[n]=0;
	sort(n);
	for(k=0;k<teste;k++)
	{
		fscanf(f,"%d %d",&nr,&p);time=0;

		bestsum=-1;
		for(i1=0;i1<=5;i1++)
		{
			if(nr>1) { s2=i1+1;f2=min(10,n-1);} else { s2=n;f2=n;}
			for(i2=s2;i2<=f2;i2++)
			{
				if(nr>2) { s3=i2+1;f3=min(16,n-1);} else { s3=n;f3=n;}
				for(i3=s3;i3<=f3;i3++)
				{
					if(nr>3) { s4=i3+1;f4=min(24,n-1);} else { s4=n;f4=n;}
					for(i4=s4;i4<=f4;i4++)
					{
						if(nr>4) { s5=i4+1;f5=min(40,n-1);} else { s5=n;f5=n;}
						for(i5=s5;i5<=f5;i5++)
						{
							sum=a[i1]+a[i2]+a[i3]+a[i4]+a[i5];time++;
							if(sum%p==0&&sum>bestsum) bestsum=sum;
						}
					}
				}
			}
		}
		printf("%d\n",time);
		fprintf(fout,"%d\n",bestsum);
	}
	fclose(f);fclose(fout);

	return 0;
}