Pagini recente » Cod sursa (job #2329385) | Cod sursa (job #2113916) | Cod sursa (job #1659908) | Cod sursa (job #855042) | Cod sursa (job #425277)
Cod sursa(job #425277)
#include <iostream>
#include <vector>
using namespace std;
#define MOD 200003
int N, A[1030];
long long L, sol;
vector<pair<int, pair<int, int> > > V[200004];
int Verifica(int a, int b, int c, int d) {
if(a==b || a==c || a==d) { return 0; }
if(b==c || b==d) { return 0; }
if(c==d) { return 0; }
return 1;
}
int main() {
FILE *f1=fopen("oite.in", "r"), *f2=fopen("oite.out", "w");
int i, j, k, p, q;
fscanf(f1, "%d %lld", &N, &L);
for(i=1; i<=N; i++) {
fscanf(f1, "%d", &A[i]);
}
for(i=1; i<=N; i++) {
for(j=i+1; j<=N; j++) {
q=(A[i]+A[j])/MOD; p=(A[i]+A[j])%MOD;
V[p].push_back(make_pair(q, make_pair(i, j)));
}
}
for(k=1; k<=N; k++) {
for(j=k+1; j<=N; j++) {
//caut suma L-A[k]-A[j] (+A[k]+A[j])
p=(L-A[k]-A[j])%MOD; q=(L-A[k]-A[j])/MOD;
if(p<0 || q<0) { continue; }
for(vector<pair<int, pair<int, int> > >::iterator it=V[p].begin(); it!=V[p].end(); it++) {
if((*it).first==q) {
if(Verifica(k, j, (*it).second.first, (*it).second.second)) { sol++; }
}
}
}
}
fprintf(f2, "%lld\n", sol/6);
fclose(f1); fclose(f2);
return 0;
}