Cod sursa(job #1807319)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 16 noiembrie 2016 12:55:35
Problema Oite Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 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, i, j;
} a[N * N];

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

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) {
            k++;
            a[k].x = v[i] + v[j];
            a[k].i = i;
            a[k].j = j;
        }
    }
    for (i = 1; i <= k; ++i) {
        d = s - a[i].x;
        aux = d % mod;
        aux2 = b[aux].size();
        for (j = 0; j < aux2; ++j) {
            if (b[aux][j].x == d && (b[aux][j].j < a[i].i || a[i].j < b[aux][j].i) )
                nr++;
        }
        b[a[i].x % mod].push_back(a[i]);
    }
    fout << nr;
    return 0;
}