10008 2024. 03. 23 23:20:15 111 Jancsi és Juliska kitalálós játéka cpp17 Időlimit túllépés 100/100 1.088s 7060 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 xxx=solve(j+1,r);
			int xx=max({solve(l,i-1),solve(i,j)});
			int x=C[i][j]+max(xx,xxx);
			if(x<a){
				a=x;
			}
			if(xxx<=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 Összpont Teszt Verdikt Idő Memória
base 100/100
1 Elfogadva 0/0 3ms 1804 KiB
2 Időlimit túllépés 0/0 1.088s 4908 KiB
3 Elfogadva 4/4 3ms 2596 KiB
4 Elfogadva 5/5 3ms 2708 KiB
5 Elfogadva 5/5 3ms 2976 KiB
6 Elfogadva 5/5 3ms 2980 KiB
7 Elfogadva 5/5 12ms 3944 KiB
8 Elfogadva 5/5 10ms 3992 KiB
9 Elfogadva 5/5 32ms 4484 KiB
10 Elfogadva 5/5 41ms 4920 KiB
11 Elfogadva 5/5 32ms 4880 KiB
12 Elfogadva 5/5 72ms 5352 KiB
13 Elfogadva 5/5 128ms 5536 KiB
14 Elfogadva 5/5 164ms 5636 KiB
15 Elfogadva 5/5 354ms 6168 KiB
16 Elfogadva 5/5 598ms 6280 KiB
17 Elfogadva 5/5 268ms 6332 KiB
18 Elfogadva 5/5 293ms 6356 KiB
19 Elfogadva 5/5 830ms 6664 KiB
20 Elfogadva 5/5 365ms 6788 KiB
21 Elfogadva 5/5 936ms 6784 KiB
22 Elfogadva 6/6 735ms 7060 KiB