제출 #1150361

#제출 시각아이디문제언어결과실행 시간메모리
1150361knhatdevLinear Garden (IOI08_linear_garden)C++20
0 / 100
111 ms111076 KiB
#include <bits/stdc++.h>
#define ii pair<int,int>
#define fi first
#define se second
#define int long long
#define task ""
using namespace std;

const int maxn = 1e6 + 5;
const int max_diff = 3;

int dp[maxn][2][2 * max_diff + 1];
int n, m, ans;
string S;

main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    if(fopen(task ".inp", "r")){
        freopen(task ".inp", "r", stdin);
        freopen(task ".out", "w", stdout);
    }
    cin >> n >> m >> S;

    dp[1][0][1 + max_diff] = 1; 
    dp[1][1][-1 + max_diff] = 1; 

    for (int i = 2; i <= n; ++i) {
        for (int j = 0; j < 2; ++j) {
            for (int diff_prev = -max_diff; diff_prev <= max_diff; ++diff_prev) {
                if (dp[i-1][j][diff_prev + max_diff] == 0) continue;

                int new_diff_L = diff_prev + 1;
                if (new_diff_L >= -max_diff && new_diff_L <= max_diff) {
                    dp[i][0][new_diff_L + max_diff] = (dp[i][0][new_diff_L + max_diff] + dp[i-1][j][diff_prev + max_diff]) % m;
                }

                int new_diff_P = diff_prev - 1;
                if (new_diff_P >= -max_diff && new_diff_P <= max_diff) {
                    dp[i][1][new_diff_P + max_diff] = (dp[i][1][new_diff_P + max_diff] + dp[i-1][j][diff_prev + max_diff]) % m;
                }
            }
        }
    }

    int ans = 0;
    int current_diff = 0; 

    for (int i = 0; i < n; ++i) {
        if (S[i] == 'L') {
            for (int diff = -max_diff; diff <= max_diff; ++diff) {
                if (abs(current_diff + diff) <= 2) {
                    ans = (ans + dp[n - i][1][diff + max_diff]) % m;
                }
            }
            current_diff += 1;
        } else {
            current_diff -= 1;
        }
    }

    ans = (ans + 1) % m;

    cout << ans;
}

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

linear_garden.cpp:16:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   16 | main() {
      | ^~~~
linear_garden.cpp: In function 'int main()':
linear_garden.cpp:19:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |         freopen(task ".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
linear_garden.cpp:20:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |         freopen(task ".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#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...
#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...
#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...
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...