| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1339441 | vjudge1 | Parametriziran (COCI19_parametriziran) | C++17 | 18 ms | 3800 KiB |
#include <bits/stdc++.h>
using namespace std;
const int MAXN=1e5;
map<int, int> fr[1<<6];
string s1[MAXN+1];
int main()
{
int n, m;
cin>>n>>m;
long long ans=0;
for(int _=1; _<=n; _++){
cin>>s1[_];
}
sort(s1+1, s1+n+1, [&](string a, string b){
int cnt=0;
int cnt1=0;
for(int i=0; i<m; i++){
cnt+=(a[i]!='?');
cnt1+=(b[i]!='?');
}
return cnt<cnt1;
});
for(int _=1; _<=n; _++){
string s=s1[_];
cout<<s<<"\n";
for(int mask=0; mask<(1<<m); mask++){
int x=0;
int p=1;
int ok=1;
for(int i=0; i<m; i++){
if(mask&(1<<i)){
if(s[i]=='?')
ok=0;
x+=p*(s[i]-'a');
}
p*=26;
}
if(ok==1){
if(!fr[mask].empty()){
ans+=fr[mask].size();
}
}
}
int mask=0;
int x=0;
int p=1;
for(int i=0; i<m; i++){
if(s[i]!='?'){
mask|=(1<<i);
x+=p*(s[i]-'a');
}
p*=26;
}
cout<<ans<<"\n";
fr[mask][x]++;
}
cout<<ans<<"\n";
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... | ||||
