Cod sursa(job #1807570)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 16 noiembrie 2016 18:31:38
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int N = 1030, mod = 666013;

struct grupa{
    unsigned int x, v;
} val;

unsigned int n, s, v[N], i, j, k, sum, nr, d, aux, aux2, ok;

vector<grupa> b[mod];

int main() {
    fin >> n >> s;
    for (i = 1; i <= n; ++i) {
        fin >> v[i];
    }
    for (i = 1; i < n; ++i) {
        for (j = i + 1; j <= n; ++j) {
            d = s - v[i] - v[j];
            aux = d % mod;
            aux2 = b[aux].size();
            for (k = 0; k < aux2; ++k) {
                if (b[aux][k].x == d) {
                    nr += b[aux][k].v;
                }
            }
        }
        for (j = 1; j < i; ++j) {
            sum = v[i] + v[j];
            aux = sum % mod;
            aux2 = b[aux].size();
            ok = 0;
            for (k = 0; k < aux2; ++k) {
                if (b[aux][k].x == sum) {
                    b[aux][k].v++;
                    ok = 1;
                    break;
                }
            }
            if (ok == 0) {
                val.x = sum;
                val.v = 1;
                b[aux].push_back(val);
            }
        }
    }
    fout << nr;
    return 0;
}