제출 #1340006

#제출 시각아이디문제언어결과실행 시간메모리
1340006darius1414Parametriziran (COCI19_parametriziran)C++20
110 / 110
405 ms39516 KiB
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
int n,m;
long long rsp;
string s;
unordered_map <int,int> mym[64][64];
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin>>n>>m;
    for (int i=1; i<=n; i++)
    {
        cin>>s;
        int nrm=0;
        for (int j=0; j<m; j++)
            if (s[j]=='?')
                nrm=nrm+(1<<j);
        for (int mask_T=0; mask_T<(1<<m); mask_T++)
        {
            int forced_mask=nrm|mask_T;
            int nr=0;
            for (int j=0; j<m; j++)
            {
                if ((1<<j)&forced_mask)
                    nr=nr*27+26;
                else
                    nr=nr*27+(s[j]-'a');
            }
            if (mym[mask_T][forced_mask].count(nr))
                rsp+=mym[mask_T][forced_mask][nr];
        }
        for (int forced_mask=0; forced_mask<(1<<m); forced_mask++)
            if ((forced_mask&nrm)==nrm)
            {
                int nr=0;
                for (int j=0; j<m; j++)
                    if ((1<<j)&forced_mask)
                        nr=nr*27+26;
                    else
                        nr=nr*27+(s[j]-'a');
                mym[nrm][forced_mask][nr]++;
            }
    }
    cout<<rsp;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...