# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1063465 | 2024-08-17T19:00:03 Z | deera | 사탕 분배 (IOI21_candies) | C++17 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; typedef long long ll; vector<ll> distribute_candies(vector<ll> c, vector<ll> l, vector<ll> r, vector<ll> v) { ll n = c.size(), q = v.size(); bool non_neg = true; for (ll val: v) if (val < 0) { non_neg = false; break; } if (non_neg == true) { vector<ll> diff(n + 1, 0); for (ll i = 0; i < q; i++) { diff[l[i]] += v[i]; diff[r[i] + 1] -= v[i]; } for (ll i = 1; i < n; i++) { diff[i] += diff[i - 1]; } vector<ll> res(n, 0); for (ll i = 0; i < n; i++) { res[i] = min(c[i], diff[i]); } return res; } if (n <= 2000 && q <= 2000) { vector<ll> res(n, 0); for (ll i = 0; i < q; i++) { for (ll j = l[i]; j <= r[i]; j++) { res[j] = max(min(res[j] + v[i], c[j]), 0ll); } } return res; } return vector<ll>(); }