Cod sursa(job #665386)

Utilizator nautilusCohal Alexandru nautilus Data 21 ianuarie 2012 23:43:01
Problema Oite Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<fstream>
#include<vector>
using namespace std;
#define NMAX 1030
#define PRIM 666013

typedef struct pereche
{
 int elemmax,suma;
} pereche;

int n,l;
int a[NMAX];
vector<pereche> t[PRIM + 5];
long long moduri;

void read()
{
 int i;
 ifstream fin("oite.in");
 fin>>n>>l;
 for (i=1; i<=n; ++i)
	 fin>>a[i];
 fin.close();
}

void solve()
{
 int i,j,k,suma1,suma2,suma1mod,suma2mod;
 pereche aux;

 for (i=1; i<n; ++i)
	 for (j=i+1; j<=n; ++j)
		 if (a[i] + a[j] <= l)
			{
			 suma1 = a[i] + a[j]; suma1mod = suma1 % PRIM;
			 suma2 = l - suma1; suma2mod = suma2 % PRIM;

			 for (k=0; k<(int)t[suma2mod].size(); ++k)
				 if (t[suma2mod][k].suma == suma2)
					 if (t[suma2mod][k].elemmax < i && t[suma2mod][k].elemmax < j )
						 moduri++;

			 aux.elemmax = j; aux.suma = suma1;
			 t[suma1mod].push_back(aux);
			}
}

void write()
{
 ofstream fout("oite.out");
 fout<<moduri<<'\n';
 fout.close();
}

int main()
{
 read();
 solve();
 write();
 return 0;
}