Cod sursa(job #1478985)

Utilizator mirupetPetcan Miruna mirupet Data 30 august 2015 11:59:28
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<cstdio>
#include<vector>
#define DIM 100000
#define MOD 32767
using namespace std;

int N, S, Sum, i, j, nr;
int v[DIM];
vector<int>Hash[DIM];

void Searching(int, int);
void Hashing();

int main()
    {
        freopen("oite.in","r",stdin);
        freopen("oite.out","w",stdout);

        scanf("%d%d", &N, &S);
        for (i = 1; i <= N; i++)
            scanf("%d", &v[i]);

        Hashing();

    }

void Searching(int val, int line)
{
    vector <int> :: iterator it;
    for (it = Hash[line].begin(); it != Hash[line].end(); it++)
          if (*it == val) nr++;
    return;
}

void Hashing()
{
    for (i = 1; i < N; i++)
        {
            for (j = i + 1; j <= N; j++)
            {
                Sum = S - v[i] - v[j];
                if (Sum < 0) continue;
                Searching(Sum, Sum % MOD);
            }

            for (j = 1; j < i; j++)
            {
                Sum = v[i] + v[j];
                Hash[Sum % MOD].push_back(Sum);
            }
        }
    printf("%d", nr);

    return;
}