Pagini recente » Cod sursa (job #2172115) | Cod sursa (job #1388417) | Cod sursa (job #1692804) | Cod sursa (job #1488240) | Cod sursa (job #425248)
Cod sursa(job #425248)
#include <iostream>
#include <vector>
using namespace std;
#define MOD 100003
int N, L, sol, A[1025];
vector<pair<int, pair<int, int> > > V[666013];
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 %d", &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++) {
p=(A[i]+A[j])%MOD; q=(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;
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, "%d\n", sol/6);
fclose(f1); fclose(f2);
return 0;
}