結果
問題 | No.258 回転寿司(2) |
ユーザー |
![]() |
提出日時 | 2015-07-31 22:47:38 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 1,115 bytes |
コンパイル時間 | 796 ms |
コンパイル使用メモリ | 75,392 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-06 18:45:19 |
合計ジャッジ時間 | 3,832 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 67 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:29:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 29 | scanf("%d",&n); | ~~~~~^~~~~~~~~ main.cpp:31:34: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 31 | for(int i=2;i<=n+1;i++) scanf("%d",&v[i]); | ~~~~~^~~~~~~~~~~~
ソースコード
#include <cstdio>#include <cstdlib>#include <iostream>#include <string>#include <cmath>#include <algorithm>#include <vector>#include <queue>#include <stack>#include <map>#include <set>#include <cstring>typedef long long ll;using namespace std;#define mod 1000000009#define INF 10000000#define LLINF 2000000000000000000LL#define SIZE 10001int main(){int n,v[1002];int dp[1002]={0},ans=0;int dp_back[1002]={0};vector<int> num;scanf("%d",&n);for(int i=2;i<=n+1;i++) scanf("%d",&v[i]);for(int i=2;i<=n+1;i++){for(int j=0;j<=i-2;j++){if(dp[i]<dp[j]+v[i]){dp[i] = dp[j]+v[i];dp_back[i]=j;}}ans =max(dp[i],ans);}int s;for(s=2;s<=n+1;s++){if(ans==dp[s])break;}num.push_back(s-1);while(dp_back[s]>0){s = dp_back[s];num.push_back(s-1);}printf("%d\n",ans);for(int i=num.size()-1;i>=0;i--)printf(i>0 ? "%d ":"%d\n",num[i]);return 0;}