Submission #448139

#TimeUsernameProblemLanguageResultExecution timeMemory
448139jk410Bajka (COCI20_bajka)C++17
70 / 70
113 ms696 KiB
#include <bits/stdc++.h> using namespace std; const int INF=1e9; int N,M,Ans=INF; int D[300][300]; string A,B; int d(int idx,int to){ if (to==M) return 0; int &r=D[idx][to]; if (r!=-1) return r; r=INF; for (int i=0; i<N; i++){ if (A[i]!=A[idx]) continue; for (int j:{-1,1}){ if (i+j<0||i+j==N||A[i+j]!=B[to]) continue; r=min(r,d(i+j,to+1)+abs(idx-i)+1); } } return r; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); memset(D,-1,sizeof(D)); cin>>N>>M>>A>>B; for (int i=0; i<N; i++){ if (A[i]==B[0]) Ans=min(Ans,d(i,1)); } if (Ans==INF) cout<<-1; else cout<<Ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...