# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1050667 | Zicrus | Distributing Candies (IOI21_candies) | C++17 | 80 ms | 16528 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "candies.h"
using namespace std;
typedef long long ll;
ll n, q;
vector<pair<ll, ll>> cap;
vector<pair<ll, ll>> tim;
vector<ll> sum;
vector<int> distribute_candies(vector<int> c, vector<int> l,
vector<int> r, vector<int> v) {
n = c.size(); q = v.size();
cap = vector<pair<ll, ll>>(n);
tim = {{-n+1, 0}};
sum = vector<ll>(q+1);
for (int i = 0; i < q; i++) {
sum[i+1] = sum[i] + v[i];
}
for (int i = 0; i < n; i++) {
cap[i] = {c[i], i};
}
sort(cap.begin(), cap.end());
for (int i = 0; i < q; i++) {
ll mx = cap[-tim.back().first].first;
ll nw = sum[i+1] - sum[abs(tim.back().second)];
if (tim.back().second < 0) nw += mx;
ll tId = tim.size()-1;
while (tId > 0 && (nw < 0 || nw > mx)) {
tId--;
nw = sum[i+1] - sum[abs(tim[tId].second)];
if (tim[tId].second < 0) nw += mx;
}
ll left = -1, right = -tim[tId].first;
while (left < right) {
ll mid = (left+right+1) / 2;
pair<ll, ll> d = {-mid, 1000000000000ll};
ll nId = upper_bound(tim.begin(), tim.end(), d) - tim.begin() - 1;
ll v = sum[i+1] - sum[abs(tim[nId].second)];
if (tim[nId].second < 0) v += cap[mid].first;
if (v < 0 || v > cap[mid].first) {
left = mid;
}
else {
right = mid-1;
}
}
while (tId != tim.size()-1) tim.pop_back();
if (-left == tim.back().first) tim.back().second = v[i] < 0 ? (i+1) : -(i+1);
else if (left >= 0) tim.push_back({-left, v[i] < 0 ? (i+1) : -(i+1)});
}
vector<int> res(n);
for (int i = 0; i < n; i++) {
while (i > -tim.back().first) tim.pop_back();
res[cap[i].second] = sum[q] - sum[abs(tim.back().second)];
if (tim.back().second < 0) res[cap[i].second] += cap[i].first;
}
return res;
}
컴파일 시 표준 에러 (stderr) 메시지
# | 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... |