Cod sursa(job #2977005)

Utilizator gianiferSpita Alexandru-Mihai gianifer Data 10 februarie 2023 16:58:28
Problema Oite Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>
#include <vector>

#define mod 999345
#define ll long long

using namespace std;

ifstream fin("oite.in");
ofstream fout("oite.out");
int c;
ll int l, oi[1100], rez;
vector<int> m[1000001];
vector<short> v[1000001];
int main()
{
   fin >> c >> l;
   for (int i = 1; i <= c; i++)
   {
      fin >> oi[i];
   }
   for (int i = 1; i < c; i++)
   {
      for (int j = i + 1; j <= c; j++)
      {
         int val = (l - oi[i] - oi[j]);
         int rest = val % mod;
         if (val < 0)
            continue;
         for (int k = 0; k < m[rest].size(); k++)
         {
            if (m[rest][k] == l - oi[i] - oi[j])
               rez += v[rest][k];
         }
      }
      for (int j = 1; j < i; j++)
      {
         int rest = (oi[i] + oi[j]) % mod;
         int ok = 0;
         for (int k = 0; k < m[rest].size(); k++)
         {
            if (m[rest][k] == oi[i] + oi[j])
            {
               ok = 1;
              v[rest][k]++;
               break;
            }
         }
         if (ok == 0)
            {m[rest].push_back(oi[i] + oi[j]);
            v[rest].push_back(1);
      }
      }
   }
   fout << rez;
   return 0;
}