Submission #1171335

#TimeUsernameProblemLanguageResultExecution timeMemory
1171335ChocoBajka (COCI20_bajka)C++20
0 / 70
4 ms1172 KiB
#include<bits/stdc++.h> using namespace std; #define Study ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL) #define ll long long #define ull unsigned long long #define pb push_back #define ff first #define ss second #define ins insert #define all(x) x.begin(),x.end() #define fori(x,y,z) for(ll x=y;x<=z;x++) const ll INF=1e9; const ll sz=1e2+10; const ll mod=1e9+7; void work(){ ll n,m; cin>>n>>m; string a,b; cin>>a>>b; vector<vector<ll>>dp(n+10,vector<ll>(m+10,INF)); fori(i,0,n-1){ if(a[i]==b[0]) dp[0][i]=0; } fori(i,1,m-1){ fori(j,0,n-1){ if(a[j]!=b[i]) continue; if(j!=0 && b[i-1]==a[j-1]) dp[i][j]=min(dp[i][j],dp[i-1][j-1]+1); if(j!=n-1 && b[i-1]==a[j+1]) dp[i][j]=min(dp[i][j],dp[i-1][j+1]+1); fori(k,0,n-1){ if(k==j || a[k]!=a[j]) continue; dp[i][k]=min(dp[i][k],dp[i][j]+abs(j-k)); } } } ll ans=INF; fori(i,0,n-1) ans=min(ans,dp[m-1][i]); if(ans==INF) cout<<-1; else cout<<ans<<endl; } int main(){ Study; ll t=1; //cin>>t; while(t--){ work(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...