Pagini recente »
Cod sursă (job #800404)
Cod sursă (job
#800404)
#include <fstream>
#include<algorithm>
using namespace std;
ifstream cin("cristela.in");
ofstream cout("cristela.out");
int v[1 << 20], dp[1 << 20];
int getPairs(long long n)
{
long long total = n * (n - 1);
int i = 0, j = (1 << 20)-1;
for (; j >= 0; i++, j--)
{
total -= (v[i] * dp[j]);
}
return total / 2;
}
int main()
{
ios::sync_with_stdio(false);
long long n, x;
int m = 0;
string s;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> s;
x = 0;
for (int j = 0; j < s.length(); j++)
{
x |= (1 << (s[j] - 'a'));
m = max(m, (s[j]-'a'));
}
v[x]++;
dp[x]++;
}
for (int i = 0; i < 20; i++)
{
for (int mask = 0; mask < (1 << 20); mask++)
{
if (mask & (1 << i))
dp[mask] += dp[mask ^ (1 << i)];
}
}
cout << getPairs(n);
}
/*
abac 000111
dde 011000
bda 001011
faf 100001
111111
*/