제출 #64035

#제출 시각아이디문제언어결과실행 시간메모리
64035evpipisLinear Garden (IOI08_linear_garden)C++11
100 / 100
150 ms41964 KiB
#include <bits/stdc++.h>
using namespace std;

const int len = 1e6+1;
int n, m, dp[len][3][3];
char str[len];

int add(int a, int b){
    return (a+b)%m;
}

int main(){
    scanf("%d %d %s", &n, &m, &str);

    for (int a = 0; a < 3; a++)
        for (int b = 0; b < 3; b++)
            dp[n][a][b] = 1;
    for (int i = n-1; i >= 0; i--)
        for (int a = -2; a <= 0; a++)
            for (int b = 0; b <= 2; b++){
                int ans = 0;
                if (a != -2)
                    ans = add(ans, dp[i+1][a-1+2][max(b-1, 0)]);
                if (b != +2)
                    ans = add(ans, dp[i+1][min(a+1, 0)+2][b+1]);
                dp[i][a+2][b] = ans;
            }

    int mn = 0, mx = 0, ans = 1;
    for (int i = 0; i < n; i++){
        if (str[i] == 'P' && mn != -2)
            ans = add(ans, dp[i+1][mn-1+2][max(mx-1, 0)]);

        if (str[i] == 'L')
            mn = mn-1, mx = max(mx-1, 0);
        else
            mn = min(mn+1, 0), mx = mx+1;
    }

    printf("%d\n", ans);
    return 0;
}

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

linear_garden.cpp: In function 'int main()':
linear_garden.cpp:13:35: warning: format '%s' expects argument of type 'char*', but argument 4 has type 'char (*)[1000001]' [-Wformat=]
     scanf("%d %d %s", &n, &m, &str);
                               ~~~~^
linear_garden.cpp:13:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d %s", &n, &m, &str);
     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#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...