提出 #70615239


ソースコード 拡げる

#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <chrono>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <limits>
#include <list>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <tuple>
#include <typeinfo>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>
#include <random>
#include <chrono>

using ll = long long;
using ld = long double;
using namespace std;
#define endl "\n";
#define ff first
#define ss second

#define forn(i,n) for(int i=0;i<n;i++)
#define dbgv(v) cout<<#v<<" "<<v<<endl
#define dbga(a,n) forn(i,n-1) {cout<<a[i]<<' ';} cout<<a[n-1]<<'\n';
#define all(v) (v).begin(), (v).end()


const ll N = 1e6 + 5, mod = 1e9 + 7;
ll fact[N], modinv[N];

ll fastpow(ll n, ll m) {
    int ret = 1;
    while (m) {
        if (m & 1)
            (ret *= n) %= mod;
        (n *= n) %= mod;
        m /= 2;
    }
    return ret;
}

void pre() {
    fact[0] = 1;
    for (int i = 1; i < N; i++)
        fact[i] = i * fact[i - 1] % mod;
    modinv[N - 1] = fastpow(fact[N - 1], mod - 2);
    for (int i = N - 2; i >= 0; i--)
        modinv[i] = (i + 1) * modinv[i + 1] % mod;
}

ll ncr(ll n, ll r) {
    return fact[n] * modinv[n - r] % mod * modinv[r] % mod;
}

void dfs(int i,int p, vector<vector<int>>&adj){
	for(auto c:adj[i]){
		dfs(c,i,adj);
	}
}
vector<int> z_function(string s) {
    int n = s.size();
    vector<int> z(n);
    int l = 0, r = 0;
    for(int i = 1; i < n; i++) {
        if(i < r) {
            z[i] = min(r - i, z[i - l]);
        }
        while(i + z[i] < n && s[z[i]] == s[i + z[i]]) {
            z[i]++;
        }
        if(i + z[i] > r) {
            l = i;
            r = i + z[i];
        }
    }
    return z;
}

void solve(){
    string a,b;
    cin>>a>>b;
    string c=b+a+a;
    vector<int> v=z_function(c);
    int cc=0;
    bool d=1;
    int n=a.size();
    forn(i,n+1){
        if(v[n+i]>=n){
            cc=i;
            d=0;
            break;
        }
    } 
    if(!d){
        cout<<cc<<endl;
    } else {
        cout<<-1<<endl;
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int T = 1;
    cin >> T;
    while(T--){
        solve();
    }
    return 0;
}

提出情報

提出日時
問題 E - Shift String
ユーザ SummitDevil
言語 C++23 (GCC 15.2.0)
得点 450
コード長 2719 Byte
結果 AC
実行時間 32 ms
メモリ 23080 KiB

コンパイルエラー

./Main.cpp: In function 'void dfs(int, int, std::vector<std::vector<int> >&)':
./Main.cpp:81:20: warning: unused parameter 'p' [-Wunused-parameter]
   81 | void dfs(int i,int p, vector<vector<int>>&adj){
      |                ~~~~^

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 450 / 450
結果
AC × 1
AC × 52
セット名 テストケース
Sample sample_01.txt
All killer_01.txt, sample_01.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, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt
ケース名 結果 実行時間 メモリ
killer_01.txt AC 13 ms 3416 KiB
sample_01.txt AC 1 ms 3472 KiB
test_01.txt AC 1 ms 3472 KiB
test_02.txt AC 1 ms 3508 KiB
test_03.txt AC 1 ms 3632 KiB
test_04.txt AC 1 ms 3416 KiB
test_05.txt AC 1 ms 3632 KiB
test_06.txt AC 2 ms 3624 KiB
test_07.txt AC 2 ms 3416 KiB
test_08.txt AC 20 ms 3544 KiB
test_09.txt AC 20 ms 3416 KiB
test_10.txt AC 17 ms 3544 KiB
test_11.txt AC 17 ms 3768 KiB
test_12.txt AC 23 ms 3892 KiB
test_13.txt AC 23 ms 3792 KiB
test_14.txt AC 26 ms 5672 KiB
test_15.txt AC 26 ms 5808 KiB
test_16.txt AC 29 ms 22996 KiB
test_17.txt AC 27 ms 22984 KiB
test_18.txt AC 17 ms 23012 KiB
test_19.txt AC 17 ms 22876 KiB
test_20.txt AC 19 ms 22988 KiB
test_21.txt AC 19 ms 22856 KiB
test_22.txt AC 22 ms 22992 KiB
test_23.txt AC 24 ms 22876 KiB
test_24.txt AC 23 ms 22984 KiB
test_25.txt AC 23 ms 23076 KiB
test_26.txt AC 24 ms 23008 KiB
test_27.txt AC 25 ms 22936 KiB
test_28.txt AC 20 ms 22880 KiB
test_29.txt AC 18 ms 23056 KiB
test_30.txt AC 19 ms 23080 KiB
test_31.txt AC 21 ms 22880 KiB
test_32.txt AC 18 ms 23020 KiB
test_33.txt AC 18 ms 23064 KiB
test_34.txt AC 19 ms 23012 KiB
test_35.txt AC 21 ms 22884 KiB
test_36.txt AC 21 ms 22988 KiB
test_37.txt AC 18 ms 23072 KiB
test_38.txt AC 19 ms 23004 KiB
test_39.txt AC 21 ms 22988 KiB
test_40.txt AC 18 ms 22864 KiB
test_41.txt AC 20 ms 22980 KiB
test_42.txt AC 18 ms 22876 KiB
test_43.txt AC 21 ms 22880 KiB
test_44.txt AC 26 ms 23008 KiB
test_45.txt AC 29 ms 23004 KiB
test_46.txt AC 26 ms 22936 KiB
test_47.txt AC 5 ms 3516 KiB
test_48.txt AC 5 ms 3472 KiB
test_49.txt AC 31 ms 23000 KiB
test_50.txt AC 32 ms 22992 KiB