제출 #549402

#제출 시각아이디문제언어결과실행 시간메모리
549402keta_tsimakuridzeMisspelling (JOI22_misspelling)C++14
100 / 100
1223 ms107200 KiB
#include<bits/stdc++.h> using namespace std; #define pii pair<int,int> #define f first #define s second #define endl "\n" const int N = 5e5 + 5, mod = 1e9 + 7; //! int t, n, dp[N][26]; multiset<int> s[2]; vector<pii> st[N], en[N]; void add(int &a, int b) { if(b < 0) b += mod; a += b; if(a >= mod) a -= mod; } void upd(int i) { for(int j = 0; j < st[i].size(); j++) { s[st[i][j].f].insert(st[i][j].s); } for(int j = 0; j < en[i].size(); j++) { s[en[i][j].f].erase(s[en[i][j].f].find(en[i][j].s)); } } main() { // ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0); int n, m; cin >> n >> m; #define pb push_back for(int i = 1; i <= m; i++) { int l, r; cin >> l >> r; if(l > r) { st[r].pb({0, r}); en[l].pb({0, r}); } else { st[l].pb({1, l}); en[r].pb({1, l}); } } for(int j = 0; j < 26; j++) dp[1][j] = 1; upd(1); for(int i = 2; i <= n; i++) { int b = 0, c = 0; if(s[0].size()) { b = *--s[0].end(); } if(s[1].size()) { c = *--s[1].end(); } vector<int> p(26), sf(26); for(int k = 0; k < 26; k++) { if(k) p[k] = p[k - 1]; add(p[k] , dp[i - 1][k] - dp[b][k]); } for(int k = 26 - 1; k >= 0; k--) { if(k != 25) sf[k] = sf[k + 1]; add(sf[k], dp[i - 1][k] - dp[c][k]); } for(int j = 0; j < 26; j++) { dp[i][j] = dp[i - 1][j]; if(j) add(dp[i][j], p[j - 1]); if(j != 25) add(dp[i][j], sf[j + 1]); } upd(i); } int ans = 0; for(int i = 0; i < 26; i++) add(ans , dp[n][i]); cout << ans; }

컴파일 시 표준 에러 (stderr) 메시지

misspelling.cpp: In function 'void upd(int)':
misspelling.cpp:17:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   17 |  for(int j = 0; j < st[i].size(); j++) {
      |                 ~~^~~~~~~~~~~~~~
misspelling.cpp:20:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |  for(int j = 0; j < en[i].size(); j++) {
      |                 ~~^~~~~~~~~~~~~~
misspelling.cpp: At global scope:
misspelling.cpp:24:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   24 | main() {
      | ^~~~
#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...