163122025-04-28 11:46:54lacitoJancsi és Juliska kitalálós játékacpp17Accepted 100/100776ms1268 KiB
#include <bits/stdc++.h>
#define maxN 301
#define Infi 10000000
using namespace std;
int N;
int A[maxN];
int K[maxN][maxN];
int F[maxN][maxN];

int main(){
   cin>>N;
   int b,m;
   for(int i=1;i<=N;i++)
      cin>>A[i];
   for(int a=1;a<=N;a++) {K[a][a]=0; F[a][a]=A[a];}
   for(int a=1;a<N;a++){
      K[a][a+1]=min(A[a],A[a+1]);
      F[a][a+1]=max(A[a],A[a+1]);
   }
   for(int d=2;d<N;d++){
      for(int a=1;a+d<=N;a++){
         b=a+d;
         K[a][b]=Infi;
         F[a][b]=max(F[a][b-1],A[b]);
         for(int u=a;u<b;u++){
            m=max(K[a][u],K[u+1][b])+min(F[a][u],F[u+1][b]); //bináris eset
            K[a][b]=min(K[a][b],m);
            for(int v=u+1;v<b;v++){//a<=u<=v<=b
               m=max(max(K[a][u],K[u+1][v]),K[v+1][b])+F[u+1][v];     //ternáris eset
               K[a][b]=min(K[a][b],m);
            }
         }
      }
   }
   cout<<K[1][N]<<endl;
}
SubtaskSumTestVerdictTimeMemory
base100/100
1Accepted0/01ms316 KiB
2Accepted0/0776ms1076 KiB
3Accepted4/41ms316 KiB
4Accepted5/51ms316 KiB
5Accepted5/51ms352 KiB
6Accepted5/51ms508 KiB
7Accepted5/512ms612 KiB
8Accepted5/512ms640 KiB
9Accepted5/530ms716 KiB
10Accepted5/541ms564 KiB
11Accepted5/552ms564 KiB
12Accepted5/5104ms1012 KiB
13Accepted5/5130ms820 KiB
14Accepted5/5159ms876 KiB
15Accepted5/5377ms892 KiB
16Accepted5/5453ms820 KiB
17Accepted5/5504ms824 KiB
18Accepted5/5573ms820 KiB
19Accepted5/5681ms1076 KiB
20Accepted5/5762ms1080 KiB
21Accepted5/5776ms1268 KiB
22Accepted6/6762ms1076 KiB