#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define INF 100000000 #define INF_INT_MAX 2147483647 #define INF_LL_MAX 9223372036854775807 #define EPS 1e-10 #define Pi acos(-1) #define LL long long #define ULL unsigned long long using namespace std; #define MAX_N 1005 int N; int V[MAX_N]; typedef pair > II; II DP[MAX_N][2]; int main(){ cin >> N; for (int i = 0; i < N; i++){ cin >> V[i]; } vector tmp; for (int i = 0; i < N; i++){ //今見ている皿をとらない場合 DP[i + 1][0] = max(DP[i + 1][0], max(DP[i][0], DP[i][1])); //今見ているお皿を取る場合 if (DP[i][0].first + V[i] > DP[i + 1][1].first){ DP[i + 1][1].first = DP[i][0].first + V[i]; tmp = DP[i][0].second; tmp.push_back(i+1); DP[i + 1][1].second = tmp; } } if (DP[N][0].first >= DP[N][1].first){ tmp = DP[N][0].second; cout << DP[N][0].first << endl; } else{ tmp = DP[N][1].second; cout << DP[N][1].first << endl; } for (int i = 0; i < tmp.size(); i++){ cout << tmp[i]; if (i < tmp.size() - 1) cout << " "; } cout << endl; return 0; }