Submission #553372

#TimeUsernameProblemLanguageResultExecution timeMemory
553372tht2005Misspelling (JOI22_misspelling)C++17
28 / 100
1561 ms831696 KiB
#include <bits/stdc++.h>

using namespace std;

const int md = (int)1e9 + 7;
void add(int& a, int b) {
    a += b;
    if(a >= md) a -= md;
    if(a < 0) a += md;
}

const int N = 202;
int n, m, res, x[N], y[N], f[N][N][N][26];

int main() {
    scanf("%d %d", &n, &m);
    for(int i = 0; i < m; ++i) {
        int a, b;
        scanf("%d %d", &a, &b);
        if(a < b) {
            x[a] = max(x[a], b);
        }
        else {
            y[b] = max(y[b], a);
        }
    }
    f[0][0][0][0] = 1;
    f[0][0][0][1] = -1;
    for(int i = 0; i < n; ++i) {
        for(int j = 0; j <= n; ++j) {
            for(int k = 0; k <= n; ++k) {
                for(int c = 1; c < 26; ++c) {
                    add(f[i][j][k][c], f[i][j][k][c - 1]);
                }
                for(int c = 0; c < 26; ++c) {
                    int ft = f[i][j][k][c];
                    if(ft == 0) continue;
                    add(f[i + 1][max(j, x[i + 1])][max(k, y[i + 1])][c], ft);
                    if(c < 25) add(f[i + 1][max(j, x[i + 1])][max(k, y[i + 1])][c + 1], -ft);
                    if(i >= j) {
                        add(f[i + 1][x[i + 1]][y[i + 1]][0], ft);
                        add(f[i + 1][x[i + 1]][y[i + 1]][c], -ft);
                    }
                    if(i >= k) {
                        if(c < 25) {
                            add(f[i + 1][x[i + 1]][y[i + 1]][c + 1], ft);
                        }
                    }
                }
            }
        }
    }
    res = 0;
    for(int i = 0; i <= n; ++i) {
        for(int j = 0; j <= n; ++j) {
            for(int c = 0; c < 26; ++c) {
                if(c) add(f[n][i][j][c], f[n][i][j][c - 1]);
                add(res, f[n][i][j][c]);
            }
        }
    }
    printf("%d", res);
    return 0;
}

Compilation message (stderr)

misspelling.cpp: In function 'int main()':
misspelling.cpp:16:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |     scanf("%d %d", &n, &m);
      |     ~~~~~^~~~~~~~~~~~~~~~~
misspelling.cpp:19:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |         scanf("%d %d", &a, &b);
      |         ~~~~~^~~~~~~~~~~~~~~~~
#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...