Cod sursa(job #1971280)

Utilizator SirbuSirbu Ioan Sirbu Data 20 aprilie 2017 08:59:24
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <vector>

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

int v[1030];
vector < int > Hash[6553];

int key (int a){

  return a%6553;

}


int main (){

  int n,s;
  long long sol = 0;
  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){
      int sum = s - (v[i] + v[j]);
      if (sum >= 0){
        vector < int > :: iterator it;
        int k = key(sum);
        for (it = Hash[k].begin(); it != Hash[k].end(); ++it)
          if (*it == sum)
          sol++;
      }
    }
    for (int j = 1; j < i; ++j){
      int k = key(v[i] + v[j]);
      Hash[k].push_back(v[i]+v[j]);
    }
  }

  fout << sol << "\n";

}