제출 #226247

#제출 시각아이디문제언어결과실행 시간메모리
226247bharat2002수열 (APIO14_sequence)C++14
39 / 100
174 ms19712 KiB
/*input
7 3
4 1 3 4 0 2 3
*/
#include<bits/stdc++.h>
using namespace std;
const int N=1e3 + 100;
const int mod=1e9 + 7;
#define int long long
const int inf=1e18;
#define pii pair<int, int>
#define f first
#define s second 
#define mp make_pair
#define FOR(i, n) for(int i=1;i<=n;i++)
#define TRACE(x) cerr << #x << " = " << x << endl 
//Trace prints the name of the variable and the value.
int dp[N][N], arr[N], n, k, pref[N], p[N][N];
signed main()
{
	ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
	cin>>n>>k;pref[0]=0;
	if(n==1)
	{
		cout<<0;return 0;
	}
	for(int i=1;i<=n;i++) {cin>>arr[i];pref[i]=arr[i] + pref[i-1];}
	for(int i=1;i<N;i++)
	{
		for(int j=1;j<N;j++) dp[i][j]=0;
	}
	for(int i=1;i<=n;i++)
	{
		dp[i][1]=pref[i]*(pref[n]-pref[i]);
	}
	for(int j=2;j<=k;j++)
	{
		for(int i=j;i<=n;i++)
		{
			for(int l=j-1;l<i;l++)
			{
				int temp=dp[l][j-1] + (pref[i]-pref[l])*(pref[n]-pref[i]);
				if(dp[i][j]<temp)
				{
					dp[i][j]=temp;p[i][j]=l;
				}
			}
		}
	}
	int mi, mval=0;
	for(int j=1;j<=n;j++) 
		{
			if(mval<dp[j][k])
			{
				mi=j;mval=dp[j][k];
			}
	}
	cout<<mval<<endl;
	stack<int> st;st.push(mi);
	while(st.size()<k)
	{
		int cur=p[st.top()][k-st.size()+1];st.push(cur);
	}
	while(!st.empty()) {cout<<st.top()<<" ";st.pop();}
}

컴파일 시 표준 에러 (stderr) 메시지

sequence.cpp: In function 'int main()':
sequence.cpp:60:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  while(st.size()<k)
        ~~~~~~~~~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...