Cod sursa(job #1491240)

Utilizator akaprosAna Kapros akapros Data 24 septembrie 2015 23:17:02
Problema Puteri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>
#include <algorithm>
#include <cstring>
#define maxN 100002
#define maxA 129
using namespace std;
int n, i, j, sol, np[maxA][maxA][maxA];
struct pset
{
    int a;
    int b;
    int c;
}v[maxN];
int val(int y, int x)
{
    if (x > 0)
        return x % y;
    while (x < 0)
        x += y;
    return x;
}
void read()
{
    freopen("puteri.in", "r", stdin);
    scanf("%d", &n);
    for (i = 1; i <= n; ++ i)
        scanf("%d %d %d", &v[i].a, &v[i].b, &v[i].c);
}
void solve()
{
    int x, a, b, c;
    for (x = 2; x < maxA; ++ x)
    {
        for (i = 1; i <= n; ++ i)
        {
            a = v[i].a;
            b = v[i].b;
            c = v[i].c;
            sol += np[val(x, x - a)][val(x, x - b)][val(x, x - c)];
            ++ np[v[i].a % x][v[i].b % x][v[i].c % x];
        }
        memset(np, 0, sizeof(np));
    }
}
void write()
{
    freopen("puteri.out", "w", stdout);
    printf("%d", sol);
}
int main()
{
    read();
    solve();
    write();
    return 0;
}