Cod sursa(job #1482653)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 7 septembrie 2015 18:11:41
Problema Triplete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<fstream>
#define x first
#define y second
using namespace std;
int n, m, i, nr, j, nr1, x;
short a[4100][4100 / 16 + 1], v[66000];
pair<int, int> p[66000];
ifstream fin("triplete.in");
ofstream fout("triplete.out");
int main(){
    fin>> n >> m;
    for(i = 1; i <= m; i++){
        fin>> p[i].x >> p[i].second;
        p[i].x--;
        p[i].y--;
        a[p[i].x][p[i].y / 16] += (1 << (p[i].y % 16));
        a[p[i].y][p[i].x / 16] += (1 << (p[i].x % 16));
    }
    for(i = 1; i <= (1 << 16) - 1; i++){
        v[i] = v[i / 2] + i % 2;
    }
    for(i = 1; i <= m; i++){
        nr1 = 0;
        for(j = 0; j <= n / 16 + 1; j++){
            x = a[p[i].x][j] & a[p[i].y][j];
            nr1 += v[x];
        }
        nr += nr1;
    }
    fout<< nr / 3 <<"\n";
    return 0;
}