Submission #1299163

#TimeUsernameProblemLanguageResultExecution timeMemory
1299163kantaponzBajka (COCI20_bajka)C++20
0 / 70
4 ms580 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long int N, M; string A, B; int dp[305][305]; int main() { ios_base::sync_with_stdio(0), cin.tie(0); cin >> N >> M; cin >> A >> B; for (int i = 0; i < 305; i++) for (int j = 0; j < 305; j++) dp[i][j] = 1e9; for (int i = 0; i < N; i++) { if (A[i] == B[0]) { dp[0][i] = 0; if (M == 1) { cout << 0; return 0; } } } int ans = 1e9; for (int k = 1; k < M; k++) { int mn = 1e9; for (int i = 0; i < N; i++) { if (A[i] != B[k]) continue; if (i >= 1) { if (A[i - 1] == B[k - 1]) { dp[k][i] = min(dp[k][i], dp[k - 1][i - 1] + 1); } } if (i + 1 < N) { if (A[i + 1] == B[k - 1]) { dp[k][i] = min(dp[k][i], dp[k - 1][i + 1] + 1); } } } for (int i = 0; i < N; i++) { if (A[i] != B[k]) continue; for (int j = 0; j < N; j++) { //if (i == j || B[k - 1] != A[j]) continue; dp[k][i] = min(dp[k][i], dp[k][j] + abs(i - j)); } } } /*for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { cout << dp[i][j] << " "; } cout << endl; }*/ cout << (ans == 1e9 ? -1 : ans); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...