Cod sursa(job #497132)

Utilizator bora_marianBora marian bora_marian Data 1 noiembrie 2010 17:57:45
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
#include<algorithm>
#include<vector>
using namespace std;
struct nod{
	short int a,b;
	nod(){}
	nod(short int I,short int J){
	a=I;b=J;}
};
vector< nod >  v[1000008];
long long vec[1034],l;
int n;
int rez;
int main()
{
	 ifstream fin("oite.in");
	 ofstream fout("oite.out");
	 fin>>n>>l;
	 int i,j;
	 for(i=1;i<=n;i++)
	    fin>>vec[i];
	 sort(vec+1,vec+n+1);   
     for(i=1;i<n;i++)
		for(j=i+1;j<=n;j++)
		{	
			int a=vec[i]+vec[j];
			a=a%1000000;
			v[a].push_back(nod(i,j));
		}
	 for(i=1;i<n;i++)
	    for(j=i+1;j<=n;j++)
	    {
			int a=vec[i]+vec[j];
			int b=l-a;
			if(b>=0)
			{  
			b=b%1000000;
			for(vector< nod >::iterator I=v[b].begin();I<v[b].end();++I)
			   if(a+vec[I->a]+vec[I->b]==l && j<I->a)
			       rez++;
			}
	    }
	 fout<<rez;
	 return 0;    
}