Cod sursa(job #778095)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 13 august 2012 22:52:28
Problema Oite Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<fstream>
#include<vector>
#define mod 1200
#define dim 1200
using namespace std;


ifstream f("oite.in");
ofstream g("oite.out");
long n,L,i,j,ans;
vector< pair < long,long  > >T[dim];
long v[dim];
void insert (long x) {
	
	long key,i,check=0;
	key=x%mod;
	for(i=0;i<T[key].size();++i){
		if(T[key][i].first==x){
			check=1;
			T[key][i].second++;
		}
	}
	if(!check)
		T[key].push_back(make_pair(x,1));
}
int query(	long x	){
	long key,i,s=0;
	key=x%mod;
	
	for(i=0;i<T[key].size();++i)
		if(T[key][i].first==x)
			s+=T[key][i].second;
	
	return s;
}
int main (){
	
	f>>n>>L;
	
	for(i=1;i<=n;++i	)
		f>>v[i];
	
	for(i=2;i<n;++i){
		for(j=1;j<i;++j)
			insert(v[i]+v[j]);
		
		for(j=i+2;j<=n;++j){
			if(L-v[i+1]-v[j]>=0)
				ans+=query(L-v[i+1]-v[j]);
		}
	}
	g<<ans<<"\n";
	return 0;
	
}