Submission #872083

# Submission time Handle Problem Language Result Execution time Memory
872083 2023-11-12T09:25:18 Z winter0101 Misspelling (JOI22_misspelling) C++14
100 / 100
2182 ms 304428 KB
#include <bits/stdc++.h>
using namespace std;
#define all(fl) fl.begin(),fl.end()
#define pb push_back
#define fi first
#define se second
#define for1(i,j,k) for(int i=j;i<=k;i++)
#define for2(i,j,k) for(int i=j;i>=k;i--)
#define for3(i,j,k,l) for(int i=j;i<=k;i+=l)
#define lb lower_bound
#define ub upper_bound
#define sz(a) (int)a.size()
#define pii pair<int,int>
#define pli pair<long long,int>
#define gcd __gcd
#define lcm(x,y) x*y/__gcd(x,y)
#define pil pair<int,long long>
const long long du = 1e9 + 7;
const int maxn = 5e5 + 9;
long long f[maxn][26];
pii a[maxn];
long long pf[maxn][26];
vector<int>add1[maxn], del1[maxn], add2[maxn], del2[maxn];
signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    //freopen("temp.INP","r",stdin);
    //freopen("temp.OUT","w",stdout);
    int n, m;
    cin >> n >> m;
    for1(i, 1, m)cin >> a[i].fi >> a[i].se;
    for1(j, 0, 25)f[1][j] = pf[1][j] = 1;
    multiset<int>sml, grt;
    sml.insert(0);
    grt.insert(0);
    for1(i, 1, m) {
        if (a[i].fi < a[i].se) {
            add1[a[i].fi].pb(a[i].fi);
            del1[a[i].se].pb(a[i].fi);
        } else {
            add2[a[i].se].pb(a[i].se);
            del2[a[i].fi].pb(a[i].se);
        }
    }
    for1(i, 1, 1) {
        for (auto v : add1[i])
            sml.insert(v);

        for (auto v : add2[i])
            grt.insert(v);

        for (auto v : del1[i])
            sml.erase(sml.find(v));

        for (auto v : del2[i])
            grt.erase(grt.find(v));
    }
    for1(i, 2, n) {
        for1(j, 0, 25) {
            for1(k, 0, 25) {
                if (j == k)
                    continue;

                if (j < k) {
                    auto it = sml.end();
                    it--;
                    f[i][k] = (f[i][k] + pf[i - 1][j] - pf[(*it)][j] + 2 * du) % du;
                } else {
                    auto it = grt.end();
                    it--;
                    f[i][k] = (f[i][k] + pf[i - 1][j] - pf[(*it)][j] + 2 * du) % du;
                }
            }
        }

        for (auto v : del1[i])
            sml.erase(sml.find(v));

        for (auto v : del2[i])
            grt.erase(grt.find(v));

        for (auto v : add1[i])
            sml.insert(v);

        for (auto v : add2[i])
            grt.insert(v);

        for1(j, 0, 26)pf[i][j] = (pf[i - 1][j] + f[i][j]) % du;
    }
    long long ans = 0;
    for1(i, 1, n)for1(j, 0, 25)ans = (ans + f[i][j]) % du;
    cout << ans;
}

Compilation message

misspelling.cpp: In function 'int main()':
misspelling.cpp:88:46: warning: iteration 26 invokes undefined behavior [-Waggressive-loop-optimizations]
   88 |         for1(j, 0, 26)pf[i][j] = (pf[i - 1][j] + f[i][j]) % du;
      |                                   ~~~~~~~~~~~^
misspelling.cpp:7:34: note: within this loop
    7 | #define for1(i,j,k) for(int i=j;i<=k;i++)
......
   88 |         for1(j, 0, 26)pf[i][j] = (pf[i - 1][j] + f[i][j]) % du;
      |              ~~~~~~~~             
misspelling.cpp:88:9: note: in expansion of macro 'for1'
   88 |         for1(j, 0, 26)pf[i][j] = (pf[i - 1][j] + f[i][j]) % du;
      |         ^~~~
# Verdict Execution time Memory Grader output
1 Correct 17 ms 51804 KB Output is correct
2 Correct 11 ms 52056 KB Output is correct
3 Correct 11 ms 51932 KB Output is correct
4 Correct 11 ms 51804 KB Output is correct
5 Correct 11 ms 51804 KB Output is correct
6 Correct 11 ms 51936 KB Output is correct
7 Correct 11 ms 51804 KB Output is correct
8 Correct 11 ms 51804 KB Output is correct
9 Correct 12 ms 51936 KB Output is correct
10 Correct 11 ms 51688 KB Output is correct
11 Correct 13 ms 51804 KB Output is correct
12 Correct 11 ms 51800 KB Output is correct
13 Correct 11 ms 51804 KB Output is correct
14 Correct 12 ms 51916 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 17 ms 51804 KB Output is correct
2 Correct 11 ms 52056 KB Output is correct
3 Correct 11 ms 51932 KB Output is correct
4 Correct 11 ms 51804 KB Output is correct
5 Correct 11 ms 51804 KB Output is correct
6 Correct 11 ms 51936 KB Output is correct
7 Correct 11 ms 51804 KB Output is correct
8 Correct 11 ms 51804 KB Output is correct
9 Correct 12 ms 51936 KB Output is correct
10 Correct 11 ms 51688 KB Output is correct
11 Correct 13 ms 51804 KB Output is correct
12 Correct 11 ms 51800 KB Output is correct
13 Correct 11 ms 51804 KB Output is correct
14 Correct 12 ms 51916 KB Output is correct
15 Correct 12 ms 51932 KB Output is correct
16 Correct 12 ms 51804 KB Output is correct
17 Correct 12 ms 51700 KB Output is correct
18 Correct 13 ms 51800 KB Output is correct
19 Correct 12 ms 51804 KB Output is correct
20 Correct 12 ms 51804 KB Output is correct
21 Correct 13 ms 51804 KB Output is correct
22 Correct 16 ms 52208 KB Output is correct
23 Correct 13 ms 51936 KB Output is correct
24 Correct 14 ms 51800 KB Output is correct
25 Correct 13 ms 51928 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 51804 KB Output is correct
2 Correct 11 ms 51804 KB Output is correct
3 Correct 11 ms 51924 KB Output is correct
4 Correct 12 ms 51804 KB Output is correct
5 Correct 1522 ms 292572 KB Output is correct
6 Correct 1633 ms 292672 KB Output is correct
7 Correct 1629 ms 292748 KB Output is correct
8 Correct 1764 ms 292732 KB Output is correct
9 Correct 1602 ms 292564 KB Output is correct
10 Correct 81 ms 59984 KB Output is correct
11 Correct 12 ms 51920 KB Output is correct
12 Correct 11 ms 51804 KB Output is correct
13 Correct 2182 ms 304428 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 17 ms 51804 KB Output is correct
2 Correct 11 ms 52056 KB Output is correct
3 Correct 11 ms 51932 KB Output is correct
4 Correct 11 ms 51804 KB Output is correct
5 Correct 11 ms 51804 KB Output is correct
6 Correct 11 ms 51936 KB Output is correct
7 Correct 11 ms 51804 KB Output is correct
8 Correct 11 ms 51804 KB Output is correct
9 Correct 12 ms 51936 KB Output is correct
10 Correct 11 ms 51688 KB Output is correct
11 Correct 13 ms 51804 KB Output is correct
12 Correct 11 ms 51800 KB Output is correct
13 Correct 11 ms 51804 KB Output is correct
14 Correct 12 ms 51916 KB Output is correct
15 Correct 12 ms 51932 KB Output is correct
16 Correct 12 ms 51804 KB Output is correct
17 Correct 12 ms 51700 KB Output is correct
18 Correct 13 ms 51800 KB Output is correct
19 Correct 12 ms 51804 KB Output is correct
20 Correct 12 ms 51804 KB Output is correct
21 Correct 13 ms 51804 KB Output is correct
22 Correct 16 ms 52208 KB Output is correct
23 Correct 13 ms 51936 KB Output is correct
24 Correct 14 ms 51800 KB Output is correct
25 Correct 13 ms 51928 KB Output is correct
26 Correct 73 ms 60064 KB Output is correct
27 Correct 80 ms 59392 KB Output is correct
28 Correct 73 ms 59280 KB Output is correct
29 Correct 85 ms 60004 KB Output is correct
30 Correct 75 ms 60068 KB Output is correct
31 Correct 289 ms 74248 KB Output is correct
32 Correct 68 ms 59988 KB Output is correct
33 Correct 69 ms 59988 KB Output is correct
34 Correct 95 ms 60244 KB Output is correct
35 Correct 512 ms 84752 KB Output is correct
36 Correct 64 ms 58572 KB Output is correct
37 Correct 77 ms 59840 KB Output is correct
38 Correct 73 ms 59484 KB Output is correct
39 Correct 75 ms 58932 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 17 ms 51804 KB Output is correct
2 Correct 11 ms 52056 KB Output is correct
3 Correct 11 ms 51932 KB Output is correct
4 Correct 11 ms 51804 KB Output is correct
5 Correct 11 ms 51804 KB Output is correct
6 Correct 11 ms 51936 KB Output is correct
7 Correct 11 ms 51804 KB Output is correct
8 Correct 11 ms 51804 KB Output is correct
9 Correct 12 ms 51936 KB Output is correct
10 Correct 11 ms 51688 KB Output is correct
11 Correct 13 ms 51804 KB Output is correct
12 Correct 11 ms 51800 KB Output is correct
13 Correct 11 ms 51804 KB Output is correct
14 Correct 12 ms 51916 KB Output is correct
15 Correct 12 ms 51932 KB Output is correct
16 Correct 12 ms 51804 KB Output is correct
17 Correct 12 ms 51700 KB Output is correct
18 Correct 13 ms 51800 KB Output is correct
19 Correct 12 ms 51804 KB Output is correct
20 Correct 12 ms 51804 KB Output is correct
21 Correct 13 ms 51804 KB Output is correct
22 Correct 16 ms 52208 KB Output is correct
23 Correct 13 ms 51936 KB Output is correct
24 Correct 14 ms 51800 KB Output is correct
25 Correct 13 ms 51928 KB Output is correct
26 Correct 11 ms 51804 KB Output is correct
27 Correct 11 ms 51804 KB Output is correct
28 Correct 11 ms 51924 KB Output is correct
29 Correct 12 ms 51804 KB Output is correct
30 Correct 1522 ms 292572 KB Output is correct
31 Correct 1633 ms 292672 KB Output is correct
32 Correct 1629 ms 292748 KB Output is correct
33 Correct 1764 ms 292732 KB Output is correct
34 Correct 1602 ms 292564 KB Output is correct
35 Correct 81 ms 59984 KB Output is correct
36 Correct 12 ms 51920 KB Output is correct
37 Correct 11 ms 51804 KB Output is correct
38 Correct 2182 ms 304428 KB Output is correct
39 Correct 73 ms 60064 KB Output is correct
40 Correct 80 ms 59392 KB Output is correct
41 Correct 73 ms 59280 KB Output is correct
42 Correct 85 ms 60004 KB Output is correct
43 Correct 75 ms 60068 KB Output is correct
44 Correct 289 ms 74248 KB Output is correct
45 Correct 68 ms 59988 KB Output is correct
46 Correct 69 ms 59988 KB Output is correct
47 Correct 95 ms 60244 KB Output is correct
48 Correct 512 ms 84752 KB Output is correct
49 Correct 64 ms 58572 KB Output is correct
50 Correct 77 ms 59840 KB Output is correct
51 Correct 73 ms 59484 KB Output is correct
52 Correct 75 ms 58932 KB Output is correct
53 Correct 1673 ms 275684 KB Output is correct
54 Correct 1653 ms 275616 KB Output is correct
55 Correct 1970 ms 291512 KB Output is correct
56 Correct 1983 ms 291592 KB Output is correct
57 Correct 1522 ms 292564 KB Output is correct
58 Correct 1522 ms 292792 KB Output is correct
59 Correct 1539 ms 292544 KB Output is correct
60 Correct 2168 ms 296224 KB Output is correct
61 Correct 1445 ms 252792 KB Output is correct
62 Correct 2005 ms 287100 KB Output is correct
63 Correct 1787 ms 277528 KB Output is correct
64 Correct 1534 ms 264872 KB Output is correct