답안 #238530

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
238530 2020-06-11T16:16:50 Z Pbezz Feast (NOI19_feast) C++14
18 / 100
80 ms 7544 KB
#include <bits/stdc++.h>
using namespace std;

#define loop(i,n) for (ll i = 0; i < n; i++)

#define ll long long
#define INF 1e9+5
#define MAXN 300007
#define pb push_back 
#define mp make_pair
typedef pair<ll,ll> pii;

ll n,k;
vector<ll>dp(MAXN);//de 1 a n
ll arr[304][304];

ll siga(ll pos, ll left){
//retornar o best que posso fazer
//usei até pos-1

	if(pos==n+1)return 0;
	if(left==0)return 0;

	if(arr[pos][left]!=-1){
	return arr[pos][left];
	}

	ll i,ret=0,k,gains;

	k=siga(pos+1,left);
	ret=max(ret,k);

	for(i=pos+1;i<=n;i++){//usar até i

	gains=dp[i]-dp[pos-1];

	k = siga(i+1,left-1)+gains;

	ret=max(ret,k);

	k = siga(i+1,left);
	ret=max(ret,k);


}

	return arr[pos][left]=ret;

}


int main(){

	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
 
	

	ll i,ans,count=0,mini,x;
	cin>>n>>k;

	vector<ll>a(n+1);

	for(i=1;i<=n;i++){
	scanf("%lld",&a[i]);

	if(a[i]<0){count++; mini=i;}

	dp[i]=dp[i-1]+a[i];

}

	if(count==0){
	ans=dp[n];
	}else if(count==1){

	if(k>=2)ans=dp[n]-a[mini];
	else{
	x=dp[n]-dp[mini];
	ans=max(dp[n], max(dp[mini-1], x));
	}

	}else if(k==1){//clássico maximum sum subarray

	ans=0;
	vector<ll>bruh(n+1);

	for(i=1;i<=n;i++){

	bruh[i]=max(bruh[i-1],(ll int)0)+a[i];
	ans=max(ans,bruh[i]);
}

	}else{//bruteforce básico
	ll j;
	for(i=0;i<=n;i++){
	for(j=0;j<=k;j++){
	arr[i][j]=-1;
	}
}

	ans=siga(1,k);

}

	printf("%lld\n",ans);

return 0;
}


Compilation message

feast.cpp: In function 'int main()':
feast.cpp:66:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld",&a[i]);
  ~~~~~^~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 61 ms 5120 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 41 ms 5120 KB Output is correct
2 Incorrect 43 ms 5120 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 70 ms 7416 KB Output is correct
2 Correct 70 ms 7416 KB Output is correct
3 Correct 72 ms 7416 KB Output is correct
4 Correct 70 ms 7416 KB Output is correct
5 Correct 80 ms 7416 KB Output is correct
6 Correct 71 ms 7544 KB Output is correct
7 Correct 68 ms 7544 KB Output is correct
8 Correct 70 ms 7416 KB Output is correct
9 Correct 70 ms 7524 KB Output is correct
10 Correct 70 ms 7524 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 2688 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 2688 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 2688 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 61 ms 5120 KB Output isn't correct
2 Halted 0 ms 0 KB -