1 solutions

  • 0
    @ 2025-11-5 17:28:06

    C++ :

    #include <cstdio>
    
    int n,m,scor[400],typ,tp,f[41][41][41][41],typnum[5];
    
    int main(){
    	scanf("%d%d",&n,&m);
    	for(int i=1;i<=n;i++){
    		scanf("%d",&scor[i]);
    	}
    	for(int i=1;i<=m;i++){
    		scanf("%d",&typ);
    		typnum[typ]++;
    	}
    	f[0][0][0][0]=scor[1];
    	for(int i=0;i<=typnum[1];i++){
    		for(int j=0;j<=typnum[2];j++){
    			for(int k=0;k<=typnum[3];k++){
    				for(int l=0;l<=typnum[4];l++){
    					tp=scor[i+j*2+k*3+l*4+1];
    					if(i>=1&&f[i][j][k][l]<f[i-1][j][k][l]+tp){
    						f[i][j][k][l]=f[i-1][j][k][l]+tp;
    					}
    					if(j>=1&&f[i][j][k][l]<f[i][j-1][k][l]+tp){
    						f[i][j][k][l]=f[i][j-1][k][l]+tp;
    					}
    					if(k>=1&&f[i][j][k][l]<f[i][j][k-1][l]+tp){
    						f[i][j][k][l]=f[i][j][k-1][l]+tp;
    					}
    					if(l>=1&&f[i][j][k][l]<f[i][j][k][l-1]+tp){
    						f[i][j][k][l]=f[i][j][k][l-1]+tp;
    					}
    				}
    			}
    		}
    	}
    	printf("%d",f[typnum[1]][typnum[2]][typnum[3]][typnum[4]]);
    	return 0;
    }
    
    • 1

    Information

    ID
    18460
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By