Submission #226250

#TimeUsernameProblemLanguageResultExecution timeMemory
226250bharat2002Split the sequence (APIO14_sequence)C++14
0 / 100
73 ms131076 KiB
/*input 7 3 4 1 3 4 0 2 3 */ #include<bits/stdc++.h> using namespace std; const int N=1e5 + 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][210], arr[N], n, k, pref[N], p[N][210]; 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<=k;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++) { int opt=j-1; for(int i=j;i<=n;i++) { while(opt<i-1) { int temp=dp[opt][j-1] + (pref[i]-pref[opt])*(pref[n]-pref[i]); int t2=dp[opt+1][j-1] + (pref[i]-pref[opt+1])*(pref[n]-pref[i]); if(t2>temp) opt++; else break; } dp[i][j]=dp[opt][j-1] + (pref[i]-pref[opt])*(pref[n]-pref[i]); p[i][j]=opt; } } int mi, mval=-inf; 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();} }

Compilation message (stderr)

sequence.cpp: In function 'int main()':
sequence.cpp:62: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...