Cod sursa(job #542995)

Utilizator Balmus_MaximBalmus Maximilian Balmus_Maxim Data 27 februarie 2011 13:03:44
Problema Oite Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <stdio.h>
#include <vector>
#include <algorithm>
#define modi 6829
using namespace std;


//vector <int> hy[1000007];

int c,l,i,v[1050],j,k,cont,jj;

vector <int> h[modi+3];
vector <int> hx[modi+3];

int main()
{
	freopen("oite.in","r",stdin);
	freopen("oite.out","w",stdout);
	scanf("%d%d",&c,&l);
	for(i=1;i<=c;i++){
		scanf("%d",&v[i]);
	}
	sort(v+1,v+c+1);
	for(i=1;i<=c;i++){
		for(j=i+1;j<=c;j++){
			if(v[i]+v[j]<l){
			int z=(v[i]+v[j])%modi;
			h[z].push_back(v[i]+v[j]);
			hx[z].push_back(i);
			//hy[z].push_back(j);
			}
		}
	}
	for(i=1;i<=c;i++){
		jj=0;
		for(j=i+1;j<=c && jj==0;j++){
			if(v[i]+v[j]<=l){
			int zz=(l-v[i]-v[j])%modi;
			int nn=h[zz].size();
			for(k=0;k<nn;k++){
				if(j<hx[zz][k] && h[zz][k]+v[i]+v[j]==l){
					//printf("%d %d %d %d\n",i,j,hx[zz][k],hy[zz][k]);
					//printf("%d %d\n",h[zz].size(),zz);
					cont++;
				}
			}
			}else{
				jj=1;
			}
		}
	}
	printf("%d",cont);
	return 0;
}