Submission #560831

#TimeUsernameProblemLanguageResultExecution timeMemory
5608318e7Misspelling (JOI22_misspelling)C++17
100 / 100
1361 ms275548 KiB
//Challenge: Accepted #include <bits/stdc++.h> using namespace std; #ifdef zisk void debug(){cout << endl;} template<class T, class ... U> void debug(T a, U ... b){cout << a << " ", debug(b...);} template<class T> void pary(T l, T r) { while (l != r) cout << *l << " ", l++; cout << endl; } #else #define debug(...) 0 #define pary(...) 0 #endif #define ll long long #define maxn 500005 #define maxc 26 #define mod 1000000007 #define pii pair<int, int> #define ff first #define ss second #define io ios_base::sync_with_stdio(0);cin.tie(0); ll dp[maxn][maxc],pref[maxn][maxc]; int lim[maxn][2]; vector<int> s1[maxn], s2[maxn]; void madd(ll &u, ll v) { u = ((u + v) % mod + mod)%mod; } int main() { io int n, m; cin >> n >> m; multiset<int> v1, v2; for (int i = 0;i < m;i++) { int a, b; cin >> a >> b; if (a < b) { s2[a].push_back(a); s2[b].push_back(-a); } else { s1[b].push_back(b); s1[a].push_back(-b); } } for (int i = 1;i <= n;i++) { for (auto j:s1[i]) { if (j > 0) v1.insert(j); else v1.erase(v1.find(-j)); } for (auto j:s2[i]) { if (j > 0) v2.insert(j); else v2.erase(v2.find(-j)); } if (v1.size()) lim[i][0] = *prev(v1.end()); if (v2.size()) lim[i][1] = *prev(v2.end()); } for (int i = 0;i < maxc;i++) dp[0][i] = 1, pref[0][i] = i + 1; for (int i = 1;i < n;i++) { //debug(lim[i][0], lim[i][1]); for (int j = 0;j < maxc;j++) { if (j) { madd(dp[i][j], (pref[i-1][j-1] - (lim[i][1] > 0 ? pref[lim[i][1]-1][j-1] : 0) + mod)); } if (j < maxc - 1) { madd(dp[i][j], pref[i-1][maxc-1] - pref[i-1][j] - (lim[i][0] > 0 ? pref[lim[i][0]-1][maxc-1] - pref[lim[i][0]-1][j] : 0) + mod); } pref[i][j] = (dp[i][j] + (j ? pref[i][j-1] : 0))%mod; } //pary(dp[i], dp[i] + maxc); for (int j = 0;j < maxc;j++) madd(pref[i][j], pref[i-1][j]); } ll ans = (pref[n-1][maxc-1]) %mod; cout << ans << "\n"; }
#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...