Submission #527836

# Submission time Handle Problem Language Result Execution time Memory
527836 2022-02-18T13:16:00 Z boris_mihov Long puzzle (innopolis2021_final_D) C++14
0 / 100
388 ms 933084 KB
#include <iostream>
#include <vector>
#include <cassert>
#include <cstring>

const int maxn = 300 + 10, mod = 1e9+7;

int n, l;
int size[maxn];
std::pair < int, int > p[maxn];

int dp[maxn][2*maxn][maxn][2][2];
int f(int ix, int len, int balance, bool begin, bool end) {

    if (balance < 0 || balance >= 2*maxn || len > l) return 0;
    if (ix == n+1) return (len == l && balance == maxn && begin && end);
    if (dp[ix][len][balance][begin][end] != -1) return dp[ix][len][balance][begin][end];

    int res = f(ix+1, len, balance, begin, end);
    
    if ((begin && (p[ix].first == 0)) || (end && (p[ix].second == 0))) return dp[ix][len][balance][begin][end] = res;
    
    int new_bal = balance;
    if (p[ix].first == 1) ++new_bal;
    if (p[ix].second == 1) --new_bal;

    res += f(ix+1, len + size[ix], new_bal, begin || (p[ix].first == 0), end || (p[ix].second == 0));
    if (res >= mod) res -= mod;

    return dp[ix][len][balance][begin][end] = res;

}

std::string front, back;
void read() {

    std::cin >> n >> l;
    for (int i = 1 ; i <= n ; ++i) {

        std::cin >> size[i] >> front >> back;
        
        if (front == "none") p[i].first = 0;
        if (front == "in") p[i].first = 1;
        if (front == "out") p[i].first = 2;

        if (back == "none") p[i].second = 0;
        if (back == "out") p[i].second = 1;
        if (back == "in") p[i].second = 2;

    }

    memset(dp, -1, sizeof(dp));
    std::cout << f(1, 0, maxn, 0, 0) << '\n';

}

void fast_io() {

    std::ios_base :: sync_with_stdio(0);
    std::cin.tie(nullptr);
    std::cout.tie(nullptr);

}

signed main () {

    fast_io();
    read();

    return 0;

}
# Verdict Execution time Memory Grader output
1 Correct 335 ms 932988 KB Output is correct
2 Incorrect 329 ms 933084 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 388 ms 933064 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 335 ms 932964 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 335 ms 932964 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 335 ms 932988 KB Output is correct
2 Incorrect 329 ms 933084 KB Output isn't correct
3 Halted 0 ms 0 KB -