제출 #794578

#제출 시각아이디문제언어결과실행 시간메모리
794578vjudge1Misspelling (JOI22_misspelling)C++17
28 / 100
47 ms524 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; const int N = 210; const int MOD = 1e9 + 7; int grt[N] = {}, sml[N] = {}; ll dp[N][26]; int main() { ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int n, m; cin >> n >> m; for(int i = 0; i < m; i++) { int a, b; cin >> a >> b; if(a < b) { grt[a] = max(grt[a], b); } else { sml[b] = max(sml[b], a); } } for(int c = 0; c < 26; c++) dp[1][c] = 1; for(int i = 2; i <= n; i++) { for(int c = 0; c < 26; c++) { dp[i][c] = 0; int sm = 0, gr = 0; for(int k = i - 1; k >= 1; k--) { sm = max(sm, sml[k]); gr = max(gr, grt[k]); if(sm >= i && gr >= i) break; for(int d = 0; d < 26; d++) { if(d == c) continue; if(sm >= i) { if(d < c) { dp[i][c] += dp[k][d]; dp[i][c] %= MOD; } } else { if(gr < i || d > c){ dp[i][c] += dp[k][d]; dp[i][c] %= MOD; } } } } } } ll ans = 0; for(int i = 1; i <= n; i++) { for(int c = 0;c < 26; c++) { ans += dp[i][c]; ans %= MOD; } } cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...