제출 #485560

#제출 시각아이디문제언어결과실행 시간메모리
485560groupATSUBajka (COCI20_bajka)C++14
70 / 70
31 ms1296 KiB
#include <iostream> #include <algorithm> #include <stack> #include <vector> #include <set> #include <cstring> #include <queue> #include <map> #include <cmath> #define aldgebu return #define ff first #define sc second #define pb push_back #define pii pair <int,int> #define p push #define ll long long #define pll pair<ll, ll> using namespace std; const ll inf = 1e9; const ll mod = 1e9 + 7; void Dontfuckedup(){ int dp[501][501]; for (int i = 0; i <= 500; i++) for (int j = 0; j <= 500; j++) dp[i][j] = inf; int M, N; string s1, s; cin >> M >> N >> s1 >> s; vector <int> pos[26]; for (int i = 0; i < M; i++) pos[s1[i] - 'a'].pb(i); int cur = s[0] - 'a'; for (int i = 0; i < pos[cur].size(); i++){ dp[pos[cur][i]][0] = 0; } int val, lst; vector <int> v; for (int i = 1; i < N; i++){ cur = s[i] - 'a'; lst = s[i - 1] - 'a'; v.clear(); for (int j = 0; j < pos[cur].size(); j++){ val = pos[cur][j]; if (val - 1 >= 0 && s1[val - 1] == s[i - 1]) v.pb(val - 1); if (val + 1 < M && s1[val + 1] == s[i - 1]) v.pb(val + 1); } for (int j = 0; j < v.size(); j++){ for (int k = 0; k < pos[lst].size(); k++){ dp[v[j]][i - 1] = min(dp[v[j]][i - 1], dp[pos[lst][k]][i - 1] + abs(pos[lst][k] - v[j])); } } for (int j = 0; j < pos[cur].size(); j++){ val = pos[cur][j]; if (val - 1 >= 0 && s1[val - 1] == s[i - 1]) dp[pos[cur][j]][i] = min(dp[pos[cur][j]][i], dp[val - 1][i - 1] + 1); if (val + 1 < M && s1[val + 1] == s[i - 1]) dp[pos[cur][j]][i] = min(dp[pos[cur][j]][i], dp[val + 1][i - 1] + 1); } } int ans = inf; cur = s[N - 1] - 'a'; for (int i = 0; i < pos[cur].size(); i++){ ans = min(ans, dp[pos[cur][i]][N - 1]); } cout << (ans == inf ? -1 : ans); } int32_t main () { ios::sync_with_stdio(false); cin.tie(nullptr); int T = 1; //cin >> T; while (T--)Dontfuckedup(); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

bajka.cpp: In function 'void Dontfuckedup()':
bajka.cpp:38:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |  for (int i = 0; i < pos[cur].size(); i++){
      |                  ~~^~~~~~~~~~~~~~~~~
bajka.cpp:48:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |   for (int j = 0; j < pos[cur].size(); j++){
      |                   ~~^~~~~~~~~~~~~~~~~
bajka.cpp:56:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |   for (int j = 0; j < v.size(); j++){
      |                   ~~^~~~~~~~~~
bajka.cpp:57:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |    for (int k = 0; k < pos[lst].size(); k++){
      |                    ~~^~~~~~~~~~~~~~~~~
bajka.cpp:62:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   62 |   for (int j = 0; j < pos[cur].size(); j++){
      |                   ~~^~~~~~~~~~~~~~~~~
bajka.cpp:73:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   73 |  for (int i = 0; i < pos[cur].size(); i++){
      |                  ~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...