Cod sursa(job #2194863)

Utilizator PetyAlexandru Peticaru Pety Data 14 aprilie 2018 14:35:31
Problema Oite Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("oite.in");
ofstream fout ("oite.out");

int n, s, v[1025], cnt, r;
struct coite_fara_c{
  int info, poz1, poz2;
  coite_fara_c *urm;
} *h[504237], *p;

int main()
{
  fin >> n >> s;
  for (int i = 1; i <= n; i++) {
    fin >> v[i];
  }
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++) {
      r = (v[i] + v[j]) % 504237;
      p = new coite_fara_c;
      p -> info = v[i] + v[j];
      p -> urm = h[r];
      p -> poz1 = i;
      p -> poz2 = j;
      h[r] = p;
    }
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++) {
      int r = (s - v[i] - v[j]) % 504237;
      if (r >= 0) {
        for (p = h[r]; p != NULL; p = p -> urm) {
          if (p -> info == (s - v[i] - v[j]) && j < p -> poz1)
            cnt++;
        }
      }
    }
  fout << cnt;
  return 0;
}