Submission #357560

#TimeUsernameProblemLanguageResultExecution timeMemory
357560bluePIN (CEOI10_pin)C++17
60 / 100
36 ms10476 KiB
#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]++;
        }
    }

    long long res = 0;

    vector<int> X;

    if(D == 1)
    {
        for(int i = 0; i < N; i++)
        {
            X = T[i];
            res += ct[0][X[1]][X[2]][X[3]];
            res += ct[X[0]][0][X[2]][X[3]];
            res += ct[X[0]][X[1]][0][X[3]];
            res += ct[X[0]][X[1]][X[2]][0];
            res -= 4 * ct[X[0]][X[1]][X[2]][X[3]];
        }
    }
    else if(D == 2)
    {
        for(int i = 0; i < N; i++)
        {
            X = T[i];
            res += ct[0][0][X[2]][X[3]];
            res += ct[0][X[1]][0][X[3]];
            res += ct[0][X[1]][X[2]][0];
            res += ct[X[0]][0][0][X[3]];
            res += ct[X[0]][0][X[2]][0];
            res += ct[X[0]][X[1]][0][0];

            res -= 3 * ct[0][X[1]][X[2]][X[3]];
            res -= 3 * ct[X[0]][0][X[2]][X[3]];
            res -= 3 * ct[X[0]][X[1]][0][X[3]];
            res -= 3 * ct[X[0]][X[1]][X[2]][0];

            res += 6 * ct[X[0]][X[1]][X[2]][X[3]];
        }


    }

    res /= 2;
    cout << res << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...