제출 #1243234

#제출 시각아이디문제언어결과실행 시간메모리
1243234nibert사탕 분배 (IOI21_candies)C++20
8 / 100
60 ms9032 KiB
#include <vector>
#include <algorithm>
using namespace std;

vector<int> distribute_candies(vector<int> c,vector<int> l,vector<int> r,vector<int> v) {
    int n = c.size(), q = r.size();
    vector<long long> boxes(n, 0);
    if(n < 2000 && q < 2000) {
        for (int i = 0; i < q; i++) {
            int left = l[i], right = r[i], value = v[i];
            if (value > 0) {
                for (int j = left; j <= right; j++) {
                    boxes[j] = min(1LL * c[j], boxes[j] + value);
                }
            } else {
                for (int j = left; j <= right; j++) {
                    boxes[j] = max(0ll, boxes[j] + value);
                }
            }
        }
        vector<int> result(n);
        for (int i=0; i < n; i ++){
            result[i] = boxes[i];
        }
        return result;
    } else {
        for (int i = 0; i < q; i++){
            int left = l[i], right = r[i], value = v[i];
            boxes[left] += value;
            if (right + 1 < n) {
                boxes[right + 1] -= value;
            }
        }
        for (int i = 1; i < n; i++){
            boxes[i] += boxes[i - 1];
            boxes[i-1] = min(1LL * c[i-1], boxes[i - 1]);
        }
        boxes[n - 1] = min(1LL * c[n - 1], boxes[n - 1]);
        vector<int> result(n);
        for (int i=0; i < n; i ++){
            result[i] = boxes[i];
        }
        return result;
    }
}
#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...