Submission #2843541


Source Code Expand

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp> // Общий файл.
#include <ext/pb_ds/tree_policy.hpp> // Содержит класс tree_order_statistics_node_update


using namespace std;
using namespace __gnu_pbds;

typedef long long ll;

#define pb push_back
#define fo(i, n) for(int i = 1; i <= n; ++i)

const int mod = 1e9 + 7;
const int N = 500500;
const int M = 10000;
const int inf = 2e9;
int n;
string s;
const int p = 37;
ll get_hash(string s) {
    int n = s.length();
    ll h = 0;
    for(int i = 0; i < n; ++i) {
        h = h * p + (s[i] - 'a' + 1);
    }
    return h;
}
map<ll, int> cnt[20];
ll ans;
int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    cin >> n >> s;
    for(int mask = 0; mask < (1 << n); ++mask) {
        string a, b;
        for(int i = 0; i < n; ++i) {
            if((1 << i) & mask) {
                a += s[i];
            } else b += s[i];
        }
        reverse(b.begin(), b.end());
        a += b;
        ll h = get_hash(a);
        cnt[__builtin_popcount(mask)][h]++;
    }
    for(int mask = 0; mask < (1 << n); ++mask) {
        string a, b;
        for(int i = n - 1; i >= 0; --i) {
            if((1 << i) & mask) {
                a += s[i + n];
            } else b += s[i + n];
        }
        reverse(b.begin(), b.end());
        a += b;
        ll h = get_hash(a);
        ans += cnt[__builtin_popcount(mask)][h];
    }
    cout << ans;
    return 0;
}

Submission Info

Submission Time
Task C - String Coloring
User Speedster
Language C++14 (GCC 5.4.1)
Score 600
Code Size 1503 Byte
Status AC
Exec Time 598 ms
Memory 33024 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 4
AC × 43
Set Name Test Cases
Sample example_0, example_1, example_2, example_3
All almost_z_0, almost_z_1, almost_z_2, almost_z_3, bigrand_0, bigrand_1, bigrand_2, example_0, example_1, example_2, example_3, handmade_0, handmade_1, nonzero_0, nonzero_1, nonzero_2, nonzero_3, nonzero_4, nonzero_5, nonzero_sc_0, nonzero_sc_1, nonzero_sc_10, nonzero_sc_11, nonzero_sc_2, nonzero_sc_3, nonzero_sc_4, nonzero_sc_5, nonzero_sc_6, nonzero_sc_7, nonzero_sc_8, nonzero_sc_9, nonzero_small_0, nonzero_small_1, nonzero_small_2, nonzero_small_3, rand_0, rand_1, rand_2, runnur_0, runnur_1, runnur_2, runnur_3, runnur_4
Case Name Status Exec Time Memory
almost_z_0 AC 385 ms 256 KiB
almost_z_1 AC 381 ms 256 KiB
almost_z_2 AC 380 ms 256 KiB
almost_z_3 AC 376 ms 256 KiB
bigrand_0 AC 531 ms 23808 KiB
bigrand_1 AC 596 ms 33024 KiB
bigrand_2 AC 535 ms 25344 KiB
example_0 AC 1 ms 256 KiB
example_1 AC 4 ms 384 KiB
example_2 AC 1 ms 256 KiB
example_3 AC 378 ms 256 KiB
handmade_0 AC 1 ms 256 KiB
handmade_1 AC 1 ms 256 KiB
nonzero_0 AC 536 ms 21760 KiB
nonzero_1 AC 531 ms 24832 KiB
nonzero_2 AC 581 ms 32512 KiB
nonzero_3 AC 555 ms 24832 KiB
nonzero_4 AC 549 ms 25856 KiB
nonzero_5 AC 598 ms 32896 KiB
nonzero_sc_0 AC 377 ms 256 KiB
nonzero_sc_1 AC 407 ms 1536 KiB
nonzero_sc_10 AC 497 ms 18944 KiB
nonzero_sc_11 AC 474 ms 13312 KiB
nonzero_sc_2 AC 412 ms 3840 KiB
nonzero_sc_3 AC 452 ms 10240 KiB
nonzero_sc_4 AC 473 ms 14720 KiB
nonzero_sc_5 AC 545 ms 21632 KiB
nonzero_sc_6 AC 376 ms 256 KiB
nonzero_sc_7 AC 401 ms 1280 KiB
nonzero_sc_8 AC 422 ms 3584 KiB
nonzero_sc_9 AC 435 ms 6656 KiB
nonzero_small_0 AC 8 ms 768 KiB
nonzero_small_1 AC 1 ms 256 KiB
nonzero_small_2 AC 1 ms 256 KiB
nonzero_small_3 AC 55 ms 3328 KiB
rand_0 AC 1 ms 256 KiB
rand_1 AC 1 ms 256 KiB
rand_2 AC 1 ms 256 KiB
runnur_0 AC 412 ms 1536 KiB
runnur_1 AC 393 ms 384 KiB
runnur_2 AC 393 ms 640 KiB
runnur_3 AC 395 ms 512 KiB
runnur_4 AC 401 ms 1152 KiB