답안 #219349

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
219349 2020-04-05T07:25:32 Z NONAME Trener (COCI20_trener) C++17
55 / 110
1216 ms 1144 KB
#include <bits/stdc++.h>
#include <time.h>
//#include <random>
//#ifndef _LOCAL
//#pragma GCC optimize("-O3")
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("unroll-loops")
//#endif
#define sz(x) int(x.size())
#define in(x) freopen(x, "r", stdin)
#define out(x) freopen(x, "w", stdout)
#define N 2 * 100500
#define oo ll(1e16)
#define pii pair <int, int>
#define pll pair <ll, ll>
#define ft first
#define sd second
#define pb push_back
#define ppb pop_back
#define mp make_pair
#define el '\n'
#define elf endl
#define base ll(1e9 + 7)
#define re return
#define nins 4294967295
using namespace std;
typedef long long ll;
typedef long double ld;

//mt19937 rnd(0);

ll n, m, dp[100][100];
string s[100][100];

void solve() {
    cin >> n >> m;

    for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
        cin >> s[i][j];

    for (int i = 0; i < m; i++)
        dp[0][i] = 1;

    for (int i = 0; i < n - 1; i++) {
        for (int j1 = 0; j1 < m; j1++)
        for (int j2 = 0; j2 < m; j2++)
            if (int(s[i + 1][j2].find(s[i][j1])) != -1)
                dp[i + 1][j2] += dp[i][j1], dp[i + 1][j2] %= base;
    }

    ll rs = 0;
    for (int i = 0; i < m; i++)
        rs += dp[n - 1][i], rs %= base;

    cout << rs;
}

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    #ifdef _LOCAL
        in("input.txt");

        int t = 1;
//        cin >> t;
        for (int i = 1; i <= t; i++) {
            cout << "Test #" << i << elf;

            clock_t start_time = clock();

            solve();

            cerr.precision(4); cerr << fixed;
            cerr << elf;
            cerr << "Time :: " << ld(clock() - start_time) / CLOCKS_PER_SEC << elf;

            cout << elf;
        }
    #else
        int t = 1;
//        cin >> t;

        while (t--) {
            solve();
            cout << el;
        }
    #endif
}
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 640 KB Output is correct
2 Correct 5 ms 640 KB Output is correct
3 Correct 5 ms 640 KB Output is correct
4 Correct 5 ms 640 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 896 KB Output is correct
2 Correct 11 ms 896 KB Output is correct
3 Correct 12 ms 896 KB Output is correct
4 Correct 10 ms 896 KB Output is correct
5 Correct 19 ms 896 KB Output is correct
6 Correct 19 ms 896 KB Output is correct
7 Correct 11 ms 896 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 640 KB Output is correct
2 Correct 5 ms 640 KB Output is correct
3 Correct 5 ms 640 KB Output is correct
4 Correct 5 ms 640 KB Output is correct
5 Correct 11 ms 896 KB Output is correct
6 Correct 11 ms 896 KB Output is correct
7 Correct 12 ms 896 KB Output is correct
8 Correct 10 ms 896 KB Output is correct
9 Correct 19 ms 896 KB Output is correct
10 Correct 19 ms 896 KB Output is correct
11 Correct 11 ms 896 KB Output is correct
12 Incorrect 1216 ms 1144 KB Output isn't correct
13 Halted 0 ms 0 KB -