Submission #1300271

#TimeUsernameProblemLanguageResultExecution timeMemory
1300271tte0Set (COCI21_set)C++20
40 / 110
1097 ms17704 KiB
// Author: Teoman Ata Korkmaz
#include <bits/stdc++.h> 
#define int int_fast64_t
using namespace std;
constexpr int N=5.5e5;
///////////////////////////////////////////////////////////
int k,n,pw[15];
vector<bool> cnt(N);
string s[N];

inline int bit(int x,int b){//0,1,2
    return (x/pw[b])%3;
}


signed main(void){
    pw[0]=1;for(int i=1;i<15;i++)pw[i]=pw[i-1]*3;

    cin>>n>>k;
    for(int i=0;i<n;i++)cin>>s[i];

    for(int i=0;i<n;i++){
        int x=0;
        for(int b=0;b<k;b++){
            x+=pw[b]*(s[i][b]-'1');
        }
        cnt[x]=true;
    }

    int ans=0;
    for(int i=0;i<pw[k]-1;i++){
        if(!cnt[i])continue;
        for(int j=i+1;j<pw[k];j++){
            if(!cnt[j])continue;
            int x=0;
            for(int b=0;b<k;b++){
                if(bit(i,b)==bit(j,b)){
                    x+=pw[b]*bit(i,b);
                }
                else{
                    x+=pw[b]*(3-bit(i,b)-bit(j,b));
                }
            }
            if(x!=i && x!=j && cnt[x])ans++;
        }
    }

    cout<<ans/3<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...