Submission #20542

#TimeUsernameProblemLanguageResultExecution timeMemory
20542CYI (#35)Can polan into space? (OJUZ11_space)C++14
0 / 100
129 ms12052 KiB
#include<cstdio> #include<algorithm> using namespace std; int n, r[200001], p[200001],cnt, fr[200001][4]; long long dp[200001][4],res; void f(int x, int y) { if (!x) return; r[x] = y; f(x - 1, fr[x][y]); } int main() { int a, b, c; scanf("%d%d%d%d", &n,&a,&b,&c); if (n == 1) { printf("%d\n1", a); return 0; } dp[1][0] = a; dp[1][2] = b; dp[1][1] = dp[1][3] = -1e15; for (int i = 2; i <= n; i++) { scanf("%d%d%d", &a, &b, &c); if (dp[i - 1][2] > dp[i - 1][3]) { dp[i][0] = dp[i - 1][2] + a; fr[i][0] = 2; dp[i][2] = dp[i - 1][2] + b; fr[i][2] = 2; } else { dp[i][0] = dp[i - 1][3] + a; fr[i][0] = 3; dp[i][2] = dp[i - 1][3] + b; fr[i][2] = 3; } if (dp[i - 1][0] > dp[i - 1][1]) { dp[i][1] = dp[i - 1][0] + b; fr[i][1] = 0; dp[i][3] = dp[i - 1][0] + c; fr[i][3] = 0; } else { dp[i][1] = dp[i - 1][1] + b; fr[i][1] = 1; dp[i][3] = dp[i - 1][1] + c; fr[i][3] = 1; } } if (dp[n][0] > dp[n][1]) f(n, 0),res=dp[n][0]; else f(n, 1), res = dp[n][1]; for (int i = 1; i <= n; i++) if (!r[i]) p[i] = ++cnt; for (int i = n; i >= 1; i--) if (r[i] == 2) p[i] = ++cnt; for (int i = 1; i <= n; i++) if (r[i] == 1) p[i] = ++cnt; for (int i = 1; i <= n; i++) if (r[i] == 3) p[i] = ++cnt; printf("%lld\n", res); for (int i = 1; i <= n; i++) printf("%d ", p[i]); return 0; }

Compilation message (stderr)

space.cpp: In function 'int main()':
space.cpp:13:35: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d%d%d", &n,&a,&b,&c);
                                   ^
space.cpp:22:36: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%d", &a, &b, &c);
                                    ^
#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...