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 |
|
|
| 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 |