답안 #445116

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
445116 2021-07-16T13:13:00 Z Abrar_Al_Samit Trener (COCI20_trener) C++17
55 / 110
2000 ms 5580 KB
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;


#define debug(x) cerr << '[' << (#x) << "] = " << x << '\n';

template<class T> using ordered_set = tree<T, null_type , less<T> , rb_tree_tag , tree_order_statistics_node_update> ;

const int Mod = 1e9 + 7;

void PlayGround() {
    int n, k; cin >> n >> k;
    vector<vector<string>>buck(n, vector<string>(k));
    for(int i=0; i<n; ++i) {
        for(auto& it : buck[i]) 
            cin >> it;
    }
    auto substring = [=] (string& s, string& t) {
        if(s.substr(0, t.size())==t || s.substr(1, t.size())==t)
            return true;
        return false;
    };
    
    vector<int>dp(n*k);
    int ans = 0;
    for(int i=0; i<k; ++i) dp[i] = 1;
    for(int i=0; i<n-1; ++i) {
        for(int j=0; j<k; ++j) {
            for(int l=0; l<k; ++l) {
                if(substring(buck[i+1][l], buck[i][j])) {
                    dp[(i+1)*k + l] = (dp[(i+1)*k+l] + dp[i*k+j]) % Mod;
                }
            }
        }
    }
    for(int i=(n-1)*k; i<n*k; ++i) ans = (ans + dp[i]) % Mod;
    cout << ans << '\n';

    #ifndef ONLINE_JUDGE
        cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
    #endif
} 
int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
   // #ifndef ONLINE_JUDGE
    //    freopen("input.txt", "r", stdin);
  //  #endif
    PlayGround();

    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 0 ms 204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 39 ms 648 KB Output is correct
2 Correct 38 ms 656 KB Output is correct
3 Correct 41 ms 652 KB Output is correct
4 Correct 23 ms 656 KB Output is correct
5 Correct 40 ms 588 KB Output is correct
6 Correct 38 ms 652 KB Output is correct
7 Correct 23 ms 588 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 0 ms 204 KB Output is correct
5 Correct 39 ms 648 KB Output is correct
6 Correct 38 ms 656 KB Output is correct
7 Correct 41 ms 652 KB Output is correct
8 Correct 23 ms 656 KB Output is correct
9 Correct 40 ms 588 KB Output is correct
10 Correct 38 ms 652 KB Output is correct
11 Correct 23 ms 588 KB Output is correct
12 Execution timed out 2076 ms 5580 KB Time limit exceeded
13 Halted 0 ms 0 KB -