Cod sursa(job #2846382)

Utilizator AswVwsACamburu Luca AswVwsA Data 9 februarie 2022 10:26:42
Problema Oite Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>
#include <vector>
using namespace std;

const int NMAX = 1024, MOD = 393241;

int v[NMAX + 1];
vector <pair <int, int> > r[MOD];
int main()
{
    FILE *fin = fopen("oite.in", "r");
    FILE *fout = fopen("oite.out", "w");
    int n, s, i, j;
    fscanf(fin, "%d %d\n", &n, &s);
    for (i = 1; i <= n; i++)
        fscanf(fin, "%d ", &v[i]);
    int ans = 0;
    for (i = 1; i + 1 <= n; ++i)
        for (j = i + 1; j <= n; ++j)
        {
            int sum = v[i] + v[j];
            r[sum % MOD].push_back({v[i] + v[j], j});
            int need = s - sum;
            if (need < 0)
                continue;
            int val = need % MOD;
            for (int k = 0; k < r[val].size(); ++k)
                if (r[val][k].first == need and r[val][k].second < i)
                    ans++;
        }
    fprintf(fout, "%d", ans);
}