Cod sursa(job #542970)

Utilizator Balmus_MaximBalmus Maximilian Balmus_Maxim Data 27 februarie 2011 12:34:35
Problema Oite Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>
#include <vector>
using namespace std;


//vector <int> hy[1000007];

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

vector <int> h[1000010];
vector <int> hx[1000010];

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]);
	}
	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])%1000007;
			h[z].push_back(v[i]+v[j]);
			hx[z].push_back(i);
			//hy[z].push_back(j);
			}
		}
	}
	for(i=1;i<=c;i++){
		for(j=i+1;j<=c;j++){
			if(v[i]+v[j]<=l){
			int zz=(l-v[i]-v[j])%1000007;
			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++;
				}
			}
			}
		}
	}
	printf("%d",cont);
	return 0;
}