제출 #716805

#제출 시각아이디문제언어결과실행 시간메모리
716805vjudge1수열 (APIO14_sequence)C++17
50 / 100
607 ms19828 KiB
#include <bits/stdc++.h> #define f first #define s second #define ent '\n' #define int long long #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") #pragma GCC optimize("Ofast,unroll-loops,fast-math,O3") //typedef long double ld; typedef long long ll; using namespace std; struct node{double x,y;}; //double len(node a,node b) //{return sqrt((a.x-b.x)*(a.x-b.y)+(a.y-b.y)*(a.x-b.y));} struct seg{ int mx1=0,mx2=0,ans=0; }; const string out[2]={"NO\n","YES\n"}; const ll dx[]={0,0,1,-1,-1,1,1,-1}; const ll dy[]={1,-1,0,0,-1,1,-1,1}; const int md=998244353; const int mod=1e9+7; const int mx=1e6+12; const int tst=1e5; const bool T=0; int dp[1012][1012]; int p[1012][1012]; int pref[mx]; int q[mx]; int n,m,k; void Press_Fn_with_F11(){ cin>>n>>m; m++; for(int i=1;i<=n;i++)cin>>q[i]; for(int i=1;i<=n;i++)pref[i]=pref[i-1]+q[i]; for(int i=0;i<=n;i++){ for(int j=0;j<=n;j++)dp[i][j]=-1e18; } dp[0][0]=0; for(int i=1;i<=n;i++){ for(int j=i;j<=n;j++){ for(int k=1;k<=min(i+1,m);k++){ dp[j][k]=max(dp[j][k],dp[i-1][k-1]+(pref[j]-pref[i-1])*(pref[n]-pref[j])); if(dp[j][k]==dp[i-1][k-1]+(pref[j]-pref[i-1])*(pref[n]-pref[j]))p[j][k]=i-1; } } } cout<<dp[n][m]<<ent; vector<int> ans; for(int i=n,j=m;j;j--){ ans.push_back(i); i=p[i][j]; } for(int i=ans.size()-1;i;i--)cout<<ans[i]<<' '; cout<<ent; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int Ersayin_abi_crush=1; if(T)cin>>Ersayin_abi_crush; for(int i=1;i<=Ersayin_abi_crush;i++){ // cout<<"Case "<<i<<": "; Press_Fn_with_F11(); } }
#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...