Submission #456378

#TimeUsernameProblemLanguageResultExecution timeMemory
456378armandDistributing Candies (IOI21_candies)C++17
0 / 100
5062 ms11924 KiB
#include "candies.h" #include <vector> #include <algorithm> bool all_pos(std::vector<int> v, int n) { for (int i = 0; i < n; i++) if (v[i] < 0) return false; return true; } std::vector<int> solve2(std::vector<int> c, std::vector<int> l, std::vector<int> r, std::vector<int> v) { int i; int n = c.size(); std::vector<int> s(n), p(n+1); int m = v.size(); for (i = 0; i < n + 1; i++) p[i] = 0; for (i = 0; i < m; i++) { p[l[i]] += v[i]; p[r[i] + 1] -= v[i]; } for (i = 1; i < n + 1; i++) p[i] += p[i - 1]; for (i = 0; i < n; i++) s[i] = std::min(p[i], c[i]); return s; } std::vector<int> distribute_candies(std::vector<int> c, std::vector<int> l, std::vector<int> r, std::vector<int> v) { int i, j; int n = c.size(); std::vector<int> s(n); for (i = 0; i < n; i++) s[i] = 0; int m = v.size(); if (all_pos(v, m)) { s = solve2(c, l, r, v); return s; } for (i = 0; i < m; i++) { if (v[i] > 0) for (j = l[i]; j <= r[i]; j++) s[j] = std::min(c[j], s[j] + v[i]); else for (j = l[i]; j <= r[i]; j++) s[j] = s[j] + v[i] < 0 ? 0 : s[j] + v[i]; } return s; } /* 3 10 15 13 2 0 2 20 0 1 -11 */
#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...