# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
357567 |
2021-01-24T06:28:00 Z |
blue |
PIN (CEOI10_pin) |
C++17 |
|
47 ms |
10348 KB |
#include <iostream>
#include <vector>
using namespace std;
/*
There are 36^4 = 1679616 possibilities for the PIN.
Let them be numbered from 0 to 1679615.
Two PINS have one difference if their
*/
int adj(char c)
{
if(c == '0') return 1;
else if('1' <= c && c <= '9') return (c - '1') + 2;
else return (c - 'a') + 11;
}
int ct[37][37][37][37];
int main()
{
int N, D;
cin >> N >> D;
string S;
vector< vector<int> > T(N, vector<int>(4));
for(int i = 0; i < N; i++)
{
cin >> S;
for(int j = 0; j < 4; j++) T[i][j] = adj(S[j]);
for(int mask = 0; mask < (1 << 4); mask++)
{
ct[(mask & (1 << 0)) ? T[i][0] : 0]
[(mask & (1 << 1)) ? T[i][1] : 0]
[(mask & (1 << 2)) ? T[i][2] : 0]
[(mask & (1 << 3)) ? T[i][3] : 0]++;
}
}
vector<long long> res(5, 0);
vector<int> X;
for(int i = 0; i < N; i++)
{
X = T[i];
res[1] += ct[0][X[1]][X[2]][X[3]];
res[1] += ct[X[0]][0][X[2]][X[3]];
res[1] += ct[X[0]][X[1]][0][X[3]];
res[1] += ct[X[0]][X[1]][X[2]][0];
res[1] -= 4 * ct[X[0]][X[1]][X[2]][X[3]];
}
for(int i = 0; i < N; i++)
{
X = T[i];
res[2] += ct[0][0][X[2]][X[3]];
res[2] += ct[0][X[1]][0][X[3]];
res[2] += ct[0][X[1]][X[2]][0];
res[2] += ct[X[0]][0][0][X[3]];
res[2] += ct[X[0]][0][X[2]][0];
res[2] += ct[X[0]][X[1]][0][0];
res[2] -= 6 * ct[X[0]][X[1]][X[2]][X[3]];
}
res[2] -= 3 * res[1];
for(int i = 0; i < N; i++)
{
X = T[i];
res[3] += ct[0][0][0][X[3]];
res[3] += ct[0][0][X[2]][0];
res[3] += ct[0][X[1]][0][0];
res[3] += ct[X[0]][0][0][0];
res[3] -= 4 * ct[X[0]][X[1]][X[2]][X[3]];
}
res[3] -= 3 * res[1];
res[3] -= 2 * res[2];
for(int i = 0; i < N; i++)
{
X = T[i];
res[4] += ct[0][0][0][0];
res[3] -= ct[X[0]][X[1]][X[2]][X[3]];
}
res[4] -= res[1];
res[4] -= res[2];
res[4] -= res[3];
res[D] /= 2;
cout << res[D] << '\n';
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
2028 KB |
Output is correct |
2 |
Correct |
2 ms |
2028 KB |
Output is correct |
3 |
Incorrect |
2 ms |
1900 KB |
Output isn't correct |
4 |
Correct |
11 ms |
2940 KB |
Output is correct |
5 |
Correct |
13 ms |
3180 KB |
Output is correct |
6 |
Correct |
13 ms |
3180 KB |
Output is correct |
7 |
Correct |
11 ms |
2924 KB |
Output is correct |
8 |
Correct |
15 ms |
3436 KB |
Output is correct |
9 |
Correct |
25 ms |
4332 KB |
Output is correct |
10 |
Correct |
25 ms |
4588 KB |
Output is correct |
11 |
Correct |
14 ms |
3308 KB |
Output is correct |
12 |
Incorrect |
30 ms |
4460 KB |
Output isn't correct |
13 |
Incorrect |
16 ms |
3468 KB |
Output isn't correct |
14 |
Incorrect |
15 ms |
3424 KB |
Output isn't correct |
15 |
Incorrect |
24 ms |
4460 KB |
Output isn't correct |
16 |
Correct |
35 ms |
9452 KB |
Output is correct |
17 |
Correct |
47 ms |
10348 KB |
Output is correct |
18 |
Incorrect |
37 ms |
9776 KB |
Output isn't correct |
19 |
Incorrect |
39 ms |
10092 KB |
Output isn't correct |
20 |
Incorrect |
46 ms |
10348 KB |
Output isn't correct |