Advertisement
fooker

P1800F, F for failed

Mar 3rd, 2023
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.02 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4.  
  5. int main()
  6. {
  7.     ll n;
  8.     cin>>n;
  9.     tuple<ll,ll,ll> p[n+1];
  10.     for (ll i=1; i<=n; i++){
  11.         string s;
  12.         cin>>s;
  13.         map <char,ll> mp;
  14.         for (ll i=0; i<s.length(); i++){
  15.             mp[s[i]]++;
  16.         }
  17.         ll x=0, y=0;
  18.         for (ll i=97; i<=122; i++){
  19.             y = (mp[(char)i]%2) + (y<<1);
  20.         }
  21.         for (ll i=97; i<=122; i++){
  22.             if (mp[(char)i]>0) x = (x<<1) + 1;
  23.             else x = x<<1;
  24.         }
  25.         get<0>(p[i]) = s.length()%2;
  26.         get<1>(p[i]) = x;
  27.         get<2>(p[i]) = y;
  28.     }
  29.     ll ans=0;
  30.     for (ll i=1; i<n; i++){
  31.         for (ll j=i+1; i<=n; j++){
  32.             bool x = get<0>(p[i]) ^ get<0>(p[j]);
  33.             bool y = get<1>(p[i]) | get<1>(p[j]);
  34.             ll mask = (1<<26) -1;
  35.             y = y^mask;
  36.             y = y&(y-1);
  37.             bool z = get<2>(p[i]) & get<2>(p[j]);
  38.             if (x && ~y && ~z) ans++;
  39.         }
  40.     }
  41.     cout<<ans;
  42. }
  43.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement