提出 #64074676
ソースコード 拡げる
#include <random>
#include <algorithm>
#include <bitset>
#include <chrono>
#include <cmath>
#include <deque>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <chrono>
#define m_p make_pair
#define all(x) (x).begin(),(x).end()
#define sz(x) ((x).size())
typedef long long ll;
using namespace std;
mt19937 rnd(348502);
const ll N = 5000010;
ll mod = 1e9 + 7;
ll mod1 = 998244353;
string s;
int p = 432;
ll dig[N], h[N];
ll dig1[N], h1[N];
void init()
{
int n = s.size();
dig[0] = 1; h[0] = 0;
dig1[0] = 1; h1[0] = 0;
for (int i = 0; i < n; i++)
{
dig[i + 1] = (dig[i] * p) % mod;
dig1[i + 1] = (dig1[i] * p) % mod1;
h[i + 1] = (h[i] * p + s[i]) % mod;
h1[i + 1] = (h1[i] * p + s[i]) % mod1;
}
}
pair<int, int> get_hash(int l, int r)
{
int aa = (h[r + 1] - h[l] * dig[r - l + 1]) % mod;
int bb = (h1[r + 1] - h1[l] * dig1[r - l + 1]) % mod1;
if (aa < 0)aa += mod;
if (bb < 0)bb += mod1;
return { aa, bb };
}
string s1;
ll hhak[N];
ll h1hak[N];
void init1()
{
int n = s1.size();
hhak[0] = 0;
h1hak[0] = 0;
for (int i = 0; i < n; i++)
{
hhak[i + 1] = (hhak[i] * p + s1[i]) % mod;
h1hak[i + 1] = (h1hak[i] * p + s1[i]) % mod1;
}
}
pair<int, int> get_hash1(int l, int r)
{
int aa = (hhak[r + 1] - hhak[l] * dig[r - l + 1]) % mod;
int bb = (h1hak[r + 1] - h1hak[l] * dig1[r - l + 1]) % mod1;
if (aa < 0)aa += mod;
if (bb < 0)bb += mod1;
return { aa, bb };
}
void solve()
{
int i, j;
cin >> s;
s1 = s;
reverse(all(s1));
init();
init1();
int ind = 0;
for (i = 0; i < s.size(); i++)
{
if (get_hash(i, s.size() - 1) == get_hash1(0, s.size() - 1 - i))
{
ind = i;
break;
}
}
for ( i = 0; i < s.size(); i++)
{
cout << s[i];
}
for (i = s.size() - 1 - (s.size() - ind); i >= 0; i--)
{
cout << s[i];
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
ll tt = 1;
//cin >> tt;
while (tt--) {
solve();
}
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | F - ABCBA |
| ユーザ | CyberCow |
| 言語 | C++ 23 (gcc 12.2) |
| 得点 | 500 |
| コード長 | 2416 Byte |
| 結果 | AC |
| 実行時間 | 32 ms |
| メモリ | 27732 KiB |
コンパイルエラー
Main.cpp: In function ‘void solve()’:
Main.cpp:90:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
90 | for (i = 0; i < s.size(); i++)
| ~~^~~~~~~~~~
Main.cpp:98:20: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
98 | for ( i = 0; i < s.size(); i++)
| ~~^~~~~~~~~~
Main.cpp:83:12: warning: unused variable ‘j’ [-Wunused-variable]
83 | int i, j;
| ^
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 500 / 500 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | sample_01.txt, sample_02.txt, sample_03.txt |
| All | sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| sample_01.txt | AC | 1 ms | 3552 KiB |
| sample_02.txt | AC | 1 ms | 3352 KiB |
| sample_03.txt | AC | 1 ms | 3440 KiB |
| test_01.txt | AC | 1 ms | 3492 KiB |
| test_02.txt | AC | 1 ms | 3552 KiB |
| test_03.txt | AC | 1 ms | 3472 KiB |
| test_04.txt | AC | 1 ms | 3484 KiB |
| test_05.txt | AC | 1 ms | 3412 KiB |
| test_06.txt | AC | 1 ms | 3440 KiB |
| test_07.txt | AC | 1 ms | 3480 KiB |
| test_08.txt | AC | 1 ms | 3548 KiB |
| test_09.txt | AC | 1 ms | 3440 KiB |
| test_10.txt | AC | 32 ms | 27532 KiB |
| test_11.txt | AC | 31 ms | 27600 KiB |
| test_12.txt | AC | 31 ms | 27448 KiB |
| test_13.txt | AC | 31 ms | 27588 KiB |
| test_14.txt | AC | 27 ms | 27640 KiB |
| test_15.txt | AC | 23 ms | 27572 KiB |
| test_16.txt | AC | 31 ms | 27572 KiB |
| test_17.txt | AC | 23 ms | 27624 KiB |
| test_18.txt | AC | 25 ms | 27616 KiB |
| test_19.txt | AC | 23 ms | 27596 KiB |
| test_20.txt | AC | 22 ms | 27556 KiB |
| test_21.txt | AC | 31 ms | 27484 KiB |
| test_22.txt | AC | 27 ms | 27580 KiB |
| test_23.txt | AC | 28 ms | 27668 KiB |
| test_24.txt | AC | 28 ms | 27572 KiB |
| test_25.txt | AC | 22 ms | 27612 KiB |
| test_26.txt | AC | 31 ms | 27572 KiB |
| test_27.txt | AC | 31 ms | 27732 KiB |
| test_28.txt | AC | 27 ms | 27588 KiB |
| test_29.txt | AC | 29 ms | 27664 KiB |
| test_30.txt | AC | 22 ms | 27484 KiB |
| test_31.txt | AC | 31 ms | 27620 KiB |
| test_32.txt | AC | 30 ms | 27636 KiB |
| test_33.txt | AC | 29 ms | 27556 KiB |