Submission #366393

# Submission time Handle Problem Language Result Execution time Memory
366393 2021-02-14T06:30:54 Z kartel Bajka (COCI20_bajka) C++14
70 / 70
32 ms 748 KB
#include <bits/stdc++.h>
#define in(x) freopen(x, "r", stdin)
#define out(x) freopen(x, "w", stdout)
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("unroll-loops")
//#pragma GCC optimize("-O3")
#define F first
#define S second
#define pb push_back
#define M ll(1e9 + 7)
#define sz(x) (int)x.size()
#define re return
#define oo ll(1e18)
#define el '\n'
#define pii pair <int, int>
#define all(x) (x).begin(), (x).end()
#define arr_all(x, n) (x + 1), (x + 1 + n)
#define vi vector<int>
using namespace std;
typedef long long ll;
//using namespace __gnu_pbds;
//typedef tree <ll, null_type, less_equal <ll> , rb_tree_tag, tree_order_statistics_node_update> ordered_set;
//typedef long double ld;
typedef unsigned long long ull;

const int N = 310;

int f[N][N], n, m;
string s, t;
vector <int> in[300];

int main()
{
//    mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());;
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
//  in("pixels.in");
//  out("pixels.out");
//    in("input.txt");
//    out("output.txt");

    cin >> n >> m >> s >> t;

    for (int i = 0; i < m; i++) {
        for (int j = 0; j <= n + 1; j++)
            f[i][j] = 2e9;
    }

    for (int i = 0; i < sz(s); i++) {
        in[s[i]].pb(i);

        if (s[i] == t[0])
            f[0][i] = 0;
    }

    for (int i = 1; i < m; i++) {
        for (int j = 0; j < sz(in[t[i - 1]]); j++) {
            int p = in[t[i - 1]][j];

            if (f[i - 1][p] == 2e9)
                continue;

            for (auto y : in[t[i - 1]]) {
                int cnt = f[i - 1][p] + abs(p - y) + 1;

                int np = y - 1;

                if (np >= 0 && s[np] == t[i]) {
                    f[i][np] = min(f[i][np], cnt);
                }

                np = y + 1;

                if (np < n && s[np] == t[i]) {
                    f[i][np] = min(f[i][np], cnt);
                }
            }
        }
    }

    int mn = 2e9;

    for (int i = 0; i < n; i++)
        if (s[i] == t.back())
            mn = min(mn, f[m - 1][i]);

    cout << ((mn == 2e9) ? -1 : mn);
}

Compilation message

bajka.cpp: In function 'int main()':
bajka.cpp:51:16: warning: array subscript has type 'char' [-Wchar-subscripts]
   51 |         in[s[i]].pb(i);
      |                ^
bajka.cpp:58:43: warning: array subscript has type 'char' [-Wchar-subscripts]
   58 |         for (int j = 0; j < sz(in[t[i - 1]]); j++) {
      |                                           ^
bajka.cpp:13:20: note: in definition of macro 'sz'
   13 | #define sz(x) (int)x.size()
      |                    ^
bajka.cpp:59:32: warning: array subscript has type 'char' [-Wchar-subscripts]
   59 |             int p = in[t[i - 1]][j];
      |                                ^
bajka.cpp:64:38: warning: array subscript has type 'char' [-Wchar-subscripts]
   64 |             for (auto y : in[t[i - 1]]) {
      |                                      ^
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 748 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
4 Correct 1 ms 748 KB Output is correct
5 Correct 1 ms 748 KB Output is correct
6 Correct 1 ms 748 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 748 KB Output is correct
2 Correct 1 ms 748 KB Output is correct
3 Correct 1 ms 748 KB Output is correct
4 Correct 1 ms 748 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 1 ms 364 KB Output is correct
7 Correct 4 ms 748 KB Output is correct
8 Correct 25 ms 748 KB Output is correct
9 Correct 32 ms 748 KB Output is correct
10 Correct 1 ms 364 KB Output is correct
11 Correct 2 ms 748 KB Output is correct