Submission #1303163

#TimeUsernameProblemLanguageResultExecution timeMemory
1303163Gadir_2880PIN (CEOI10_pin)C++20
100 / 100
52 ms15000 KiB
#include<bits/stdc++.h> using namespace std; #define debug(n,m) cout<<"["<<#n<<"]->"<<n<<m #define int long long #define all(x) x.begin(),x.end() #define pb push_back const int N=2e6+5; const int mod=1e9+7; const int inf=2e9; int dp[37][37][37][37]; int pos[256]; void levi() { int n,nd; cin>>n>>nd; int tim=0; for (char c='0';c<='9';++c) { pos[c]=tim++; } for (char c='a';c<='z';++c) { pos[c]=tim++; } for (int i=1;i<=n;++i) { string s; cin>>s; for (int j=0;j<16;++j) { vector<int> id={36,36,36,36}; for (int l=0;l<4;++l) { if (j&(1<<l)) id[l]=pos[s[l]]; //debug(pos[s[l]],'\n'); } ++dp[id[0]][id[1]][id[2]][id[3]]; } } nd=4-nd; vector<int> su(5,0); for (int i=0;i<16;++i) { int res=0; int d=__builtin_popcount(i); vector<int> id; for (int j=0;j<4;++j) { if (i&(1<<j)) id.pb(j); } if (d==0) { int cu=dp[36][36][36][36]; res+=(cu*(cu-1)/2); } else if (d==1) { for (int c=0;c<tim;++c) { vector<int> pu={36,36,36,36}; pu[id[0]]=c; int cu=dp[pu[0]][pu[1]][pu[2]][pu[3]]; res+=(cu*(cu-1)/2); } } else if (d==2) { for (int c=0;c<tim;++c) { for (int c2=0;c2<tim;++c2) { vector<int> pu={36,36,36,36}; pu[id[0]]=c; pu[id[1]]=c2; int cu=dp[pu[0]][pu[1]][pu[2]][pu[3]]; res+=(cu*(cu-1)/2); } } } else if (d==3) { for (int c=0;c<tim;++c) { for (int c2=0;c2<tim;++c2) { for (int c3=0;c3<tim;++c3) { vector<int> pu={36,36,36,36}; pu[id[0]]=c; pu[id[1]]=c2; pu[id[2]]=c3; int cu=dp[pu[0]][pu[1]][pu[2]][pu[3]]; res+=(cu*(cu-1)/2); } } } } else { for (int c=0;c<tim;++c) { for (int c2=0;c2<tim;++c2) { for (int c3=0;c3<tim;++c3) { for (int c4=0;c4<tim;++c4) { vector<int> pu={36,36,36,36}; pu[id[0]]=c; pu[id[1]]=c2; pu[id[2]]=c3; pu[id[3]]=c4; int cu=dp[pu[0]][pu[1]][pu[2]][pu[3]]; res+=(cu*(cu-1)/2); } } } } } su[d]+=res; } vector<int> res(5,0); res[0]=su[0]-su[1]+su[2]-su[3]+su[4]; res[1]=su[1]-2*su[2]+3*su[3]-4*su[4]; res[2]=su[2]-3*su[3]+6*su[4]; res[3]=su[3]-4*su[4]; res[4]=su[4]; cout<<res[nd]<<'\n'; } int32_t main() { // freopen("sumdiv.in","r",stdin); // freopen("sumdiv.out","w",stdout); ios_base::sync_with_stdio(0); cin.tie(0);int tt=1;//cin>>tt; while(tt--)levi(); }
#Verdict Execution timeMemoryGrader output
Fetching results...