/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 2ms 540.0 KiB
#2 Wrong Answer 169ms 668.0 KiB
#3 Wrong Answer 181ms 764.0 KiB
#4 Wrong Answer 188ms 3.16 MiB
#5 Wrong Answer 188ms 20.613 MiB
#6 Wrong Answer 226ms 193.02 MiB
#7 Wrong Answer 228ms 193.012 MiB
#8 Wrong Answer 228ms 193.082 MiB
#9 Wrong Answer 227ms 193.086 MiB
#10 Wrong Answer 223ms 193.055 MiB
#11 Wrong Answer 225ms 192.973 MiB
#12 Wrong Answer 220ms 193.176 MiB
#13 Wrong Answer 223ms 193.156 MiB
#14 Wrong Answer 224ms 193.156 MiB
#15 Wrong Answer 224ms 193.027 MiB
#16 Accepted 216ms 193.27 MiB
#17 Wrong Answer 71ms 60.52 MiB
#18 Wrong Answer 42ms 8.453 MiB
#19 Accepted 54ms 9.832 MiB
#20 Accepted 229ms 193.082 MiB

Code

#include<bits/stdc++.h>
using namespace std;
const long long M=200001,MOD=1e18;
#define int long long
//typedef long long int ll;

int dp[M][5][5][5];
int limit=4;
int32_t main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t=1;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        vector<int>a(n+1);
        for(int i=1;i<=n;i++)cin>>a[i];
        for(int l=0;l<limit;l++)
            for(int j=0;j<limit;j++)
                for(int k=0;k<limit;k++)dp[1][l][j][k]=l*a[1];

          for(int l=0;l<limit;l++)
            for(int j=0;j<limit;j++)
                for(int k=0;k<limit;k++){
                    if(l!=j)dp[2][l][j][k]=l*a[2]+j*a[1];
                    else dp[2][l][j][k]=MOD;
                }

            for(int i=3;i<=n;i++){
                for(int l=0;l<limit;l++)
               for(int j=0;j<limit;j++)
                for(int k=0;k<limit;k++){
                    dp[i][l][j][k]=MOD;
                    if(l==j || l==k || j==k)continue;
                    int cur=a[i]*l+a[i-1]*j+ a[i-2]*k;

                    for(int x=0;x<limit;x++){
                        if(x==j || x==k)continue;
                       for(int y=0;y<limit;y++){
                           if( y==x || y==k)continue;
                           for(int z=0;z<limit;z++){
                            if(z==x || z==y )continue;
                            dp[i][l][j][k]=min(dp[i][l][j][k],cur+dp[i-3][x][y][z]);
                           }
                       }
                    }
                }
            }
            int mx=MOD;
             for(int l=0;l<limit;l++)
            for(int j=0;j<limit;j++)
                for(int k=0;k<limit;k++)mx=min(dp[n][l][j][k],mx);
                    cout<<mx<<"\n";
        
    
    }


   
   return 0;
 
}

Information

Submit By
Type
Submission
Problem
P1087 Face the monsters
Language
C++20 (G++ 13.2.0)
Submit At
2024-08-22 13:03:28
Judged At
2024-08-22 13:03:28
Judged By
Score
20
Total Time
229ms
Peak Memory
193.27 MiB