This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<iostream>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;
int n;
bool visited[200001];
long long int cache[301][301];
struct choojin {
int a[3];
choojin(int _a, int _b, int _c) {
a[0] = _a;
a[1] = _b;
a[2] = _c;
}
};
vector<choojin> list;
vector<int> result;
int countNear(int cur) {
int count = 0;
for (int i = -1; i < 2; i++) {
if (i == 0) continue;
int pos = cur + i;
if (pos >= 0 && pos < n) {
if (visited[pos]) count++;
}
}
return count;
}
long long int solve(int cur, int k) {
if(k != 0) visited[cur] = true;
if(k == n) return list[cur].a[countNear(cur)];
long long int ret = 0;
for (int i = 0; i < n; i++) {
if (!visited[i]) {
long long int tmp = ret;
if(k == 0) ret = max(ret, solve(i, k + 1));
else ret = max(ret, list[cur].a[countNear(cur)] + solve(i, k + 1));
if (tmp != ret) cache[cur][k] = i;
visited[i] = false;
}
}
return ret;
}
void reconstruct(int cur, int k) {
if (k == n) return;
result.push_back(cache[cur][k]);
solve(cache[cur][k], k + 1);
reconstruct(cache[cur][k], k + 1);
}
int main() {
memset(cache, -1, sizeof(cache));
cin >> n;
for (int i = 0; i < n; i++) {
int a, b, c;
cin >> a >> b >> c;
list.push_back(choojin(a, b, c));
}
cout << solve(0, 0) << endl;
reconstruct(0, 0);
for (int i = 0; i < result.size(); i++) {
cout << result[i] + 1 << ' ';
}
}
Compilation message (stderr)
space.cpp: In function 'int main()':
space.cpp:64:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 0; i < result.size(); i++) {
^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |