結果
問題 | No.258 回転寿司(2) |
ユーザー |
|
提出日時 | 2017-12-07 03:09:33 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,477 bytes |
コンパイル時間 | 2,211 ms |
コンパイル使用メモリ | 162,112 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-06 19:20:32 |
合計ジャッジ時間 | 4,844 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 67 |
ソースコード
#include "bits/stdc++.h"using namespace std;#define print(x) cout<<x<<endl;#define rep(i,a,b) for(int i=a;i<b;i++)#define REP(i,a) for(int i=0;i<a;i++)#define printall(n,array) {for(int i=0;i<n;i++){cout<<array[i]<<" ";}cout<<endl;}#define U() cout<<endl;typedef long long ll;typedef pair<int, int> PI;typedef pair<int, PI> V;typedef vector<int> VE;const ll mod = 1000000007; //10^9+7int n;int v[1002];int dp[1002][2];VE ve;void restore(int t,int rest){if(t<0||rest<0)return ;//print("push "<<t);///ve.push_back(t);//print("rest "<<rest);///if(dp[t-1][1]==rest){//print("get1 "<<t-1);///rest-=v[t-1];restore(t-1,rest);}else if(dp[t-2][1]==rest){//print("get2 "<<t-2);///rest-=v[t-2];restore(t-2,rest);}else{//print("get3 "<<t-3);///rest-=v[t-3];restore(t-3,rest);}}int main(){cin>>n;REP(i,n)cin>>v[i];////printall(n,v);///dp[0][0]=0;dp[0][1]=v[0];dp[1][0]=v[0];dp[1][1]=v[1];////REP(i,n){REP(j,2)cout<<dp[i][j];cout<<endl;}///rep(i,2,n){dp[i][0]=dp[i-1][1];dp[i][1]=max(dp[i-2][1],dp[i-3][1])+v[i];}//REP(i,n){REP(j,2)cout<<dp[i][j];cout<<endl;}///int ans=max(dp[n-1][0],dp[n-1][1]);print(ans);if(dp[n-1][0]<=dp[n-1][1]){//print("start1 "<<n-1);///restore(n-1,ans-v[n-1]);}else{//print("start2 "<<n-2);///restore(n-2,ans-v[n-2]);}reverse(ve.begin(),ve.end());REP(i,ve.size())cout<<ve[i]+1<<" ";U();}