100072024-03-23 23:18:16111Jancsi és Juliska kitalálós játékacpp17Időlimit túllépés 90/1001.1s7412 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

int N,F[300],C[300][300],A[300][300];

int solve(int l,int r){
	if(l>=r){
		return 0;
	}
	if(A[l][r]!=-1){
		return A[l][r];
	}
	int a=INT_MAX;
	for(int i=l;i<=r;i++){
		for(int j=i;j<=r;j++){
			if(i==l&&j==r){
				continue;
			}
			int xx=max(solve(l,i-1),solve(i,j));
			int x=C[i][j]+max(xx,solve(j+1,r));
			if(x<a){
				a=x;
			}
			if(solve(j+1,r)<=xx)break;
		}
	}
	A[l][r]=a;
	return a;
}

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cin>>N;
	for(int i=0;i<N;i++){
		cin>>F[i];
	}
	for(int i=0;i<N;i++){
		C[i][i]=F[i];
		for(int j=i+1;j<N;j++){
			C[i][j]=max(C[i][j-1],F[j]);
		}
	}
	for(int i=0;i<N;i++){
		for(int j=i;j<N;j++){
			A[i][j]=-1;
		}
	}
	cout<<solve(0,N-1)<<'\n';
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base90/100
1Elfogadva0/03ms2056 KiB
2Időlimit túllépés0/01.1s2944 KiB
3Elfogadva4/43ms2712 KiB
4Elfogadva5/53ms2936 KiB
5Elfogadva5/53ms3324 KiB
6Elfogadva5/53ms2996 KiB
7Elfogadva5/514ms3924 KiB
8Elfogadva5/513ms4012 KiB
9Elfogadva5/541ms4412 KiB
10Elfogadva5/548ms4824 KiB
11Elfogadva5/541ms5080 KiB
12Elfogadva5/587ms5444 KiB
13Elfogadva5/5158ms5752 KiB
14Elfogadva5/5201ms5732 KiB
15Elfogadva5/5442ms6376 KiB
16Elfogadva5/5750ms6636 KiB
17Elfogadva5/5333ms6964 KiB
18Elfogadva5/5368ms7180 KiB
19Időlimit túllépés0/51.046s7376 KiB
20Elfogadva5/5453ms7412 KiB
21Időlimit túllépés0/51.067s5108 KiB
22Elfogadva6/6916ms7356 KiB