Cod sursa(job #961190)

Utilizator superman_01Avramescu Cristian superman_01 Data 11 iunie 2013 18:25:52
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<fstream>
#include<vector>

#define MOD 6013
#define MAX_SIZE 1025

using namespace std;

ifstream f("oite.in");
ofstream g("oite.out");

vector<int>HASH[MOD];
int L,C,Answer;
int v[MAX_SIZE];

void Read( void )
{
	f>>C>>L;
	for(int i(1) ; i <= C ; f>>v[i++]);
	f.close();
}
void Solve ( void )
{
	for(int i(1) ; i < C ; ++i )
	{
		for(int ii(i+1); ii <= C ; ++ii )
			if( L-v[i]-v[ii] >= 0 )
			{
		{
			int key;
			key=L-v[i]-v[ii];
			int val(L-v[i]-v[ii]);
			key%=MOD;
			for( vector<int>::iterator it=HASH[key].begin() ; it!= HASH[key].end() ; ++it )
				if( *it == val )
					++Answer;
		}
			}
          for(int ii(1) ; ii < i ; ++ii )
          {
			  int key,val;
			  val=v[i]+v[ii];
			  key=val%MOD;
			  HASH[key].push_back(val);
		  }			  
	}
	
}

void Write ( void )
{
	g<<Answer<<"\n";
	g.close();
}

int main ( void )
{
	Read();
	Solve();
	Write();
	return 0;
}