제출 #234787

#제출 시각아이디문제언어결과실행 시간메모리
234787nicolaalexandraMiners (IOI07_miners)C++14
100 / 100
141 ms100728 KiB
#include <bits/stdc++.h>
#define DIM 100010
#define INF 2000000000
using namespace std;
int dp[DIM][4][4][4][4];
char v[DIM];
int n,i,nr;
int main (){

    //ifstream cin ("date.in");
   // ofstream cout ("date.out");

    cin>>n>>v+1;

    for (i=0;i<=n;i++)
        for (int val=0;val<=3;val++)
            for (int val2=0;val2<=3;val2++)
                for (int val3=0;val3<=3;val3++)
                    for (int val4=0;val4<=3;val4++)
                        dp[i][val][val2][val3][val4] = -INF;

    dp[0][0][0][0][0] = 0;

    for (i=0;i<n;i++){
        if (v[i+1] == 'M')
            nr = 1;
        else {
            if (v[i+1] == 'F')
                nr = 2;
            else nr = 3;
        }

        for (int val=0;val<=3;val++)
            for (int val2=0;val2<=3;val2++)
                for (int val3=0;val3<=3;val3++)
                    for (int val4=0;val4<=3;val4++){
                        if (dp[i][val][val2][val3][val4] == -INF)
                            continue;

                        /// pun in mina 1
                        int cnt = 0;
                        if (val == 1 || val2 == 1 || nr == 1)
                            cnt++;
                        if (val == 2 || val2 == 2 || nr == 2)
                            cnt++;
                        if (val == 3 || val2 == 3 || nr == 3)
                            cnt++;

                        dp[i+1][val2][nr][val3][val4] = max (dp[i+1][val2][nr][val3][val4], dp[i][val][val2][val3][val4] + cnt);

                        /// pun in mina 2
                        cnt = 0;
                        if (val3 == 1 || val4 == 1 || nr == 1)
                            cnt++;
                        if (val3 == 2 || val4 == 2 || nr == 2)
                            cnt++;
                        if (val3 == 3 || val4 == 3 || nr == 3)
                            cnt++;

                        dp[i+1][val][val2][val4][nr] = max (dp[i+1][val][val2][val4][nr], dp[i][val][val2][val3][val4] + cnt);
                    }}

    int sol = 0;
    for (int val=0;val<=3;val++)
        for (int val2=0;val2<=3;val2++)
            for (int val3=0;val3<=3;val3++)
                for (int val4=0;val4<=3;val4++)
                    sol = max (sol,dp[n][val][val2][val3][val4]);
    cout<<sol;

    return 0;
}

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

miners.cpp: In function 'int main()':
miners.cpp:13:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
     cin>>n>>v+1;
             ~^~
#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...