| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1339480 | po_rag526 | Parametriziran (COCI19_parametriziran) | C++20 | 977 ms | 3972 KiB |
#include <iostream>
#include <map>
#include <vector>
using namespace std;
const int N = 5e4 + 5;
const int M = 6;
int n,m;
string s;
vector<string> vm[1 << M];
void read()
{
cin >> n >> m;
for(int i=0;i<n;i++)
{
cin >> s;
int msk = 0;
for(int j=0; j<m; j++)
{
if(s[j] != '?')
msk += (1 << j);
}
vm[msk].push_back(s);
}
}
void solve()
{
int ansss = 0;
for(int msk1 = 0; msk1<(1<<m); msk1++)
{
for(int msk2=0; msk2<(1<<m); msk2++)
{
map<string, int> okay;
for(auto var : vm[msk1])
{
string curr;
for(int j=0; j<m; j++)
{
if(msk1 & (1<<j) && msk2 & (1<<j))
curr.push_back(var[j]);
}
okay[curr]++;
}
for(auto var : vm[msk2])
{
string curr;
for(int j=0; j<m; j++)
{
if(msk1 & (1<<j) && msk2 & (1<<j))
curr.push_back(var[j]);
}
ansss += okay[curr];
}
}
}
cout<<(ansss - n)/2 <<'\n';
}
int main()
{
read();
solve();
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
