Submission #96759

#TimeUsernameProblemLanguageResultExecution timeMemory
96759kraljlavova1Parametriziran (COCI19_parametriziran)C++11
88 / 110
1583 ms66560 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef pair<int, int> pii;
const int MAX = 1e5 + 10, MAXOFF = 8;
int n, m;
ll sol;
string s[MAX];
map<string, ll> mp[1 << MAXOFF];
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);cout.tie(NULL);
    cin >> n >> m;
    for(int i = 0;i < n; i++){
    	cin >> s[i];
		}
    for(int i = 0;i < n; i++){
        int num = 0, len = 0;
        string p;
        for(int j = 0;j < m; j++){
            if(s[i][j] != '?'){
                p += s[i][j];
                num += (1 << j);
                len++;
            }
        }
        for(int j = 0;j < (1 << len); j++){
            string tmp = p;
            for(int k = 0;k < len; k++){
                if((1 << k) & j) tmp[k] = '?';
            }
            sol += mp[num][tmp];
        }
        for(int j = 0;j < (1 << m); j++){
            p = "";
            for(int k = 0;k < m; k++){
                if(j & (1 << k)){
                    p += s[i][k];
                }
            }
            mp[j][p]++;
        }
    }
    cout << sol << "\n";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...