제출 #436532

#제출 시각아이디문제언어결과실행 시간메모리
436532VladaMG98사탕 분배 (IOI21_candies)C++17
29 / 100
144 ms12004 KiB
#include "candies.h"

#include <bits/stdc++.h>
using namespace std;

const int MAXN = 200010;
typedef long long ll;
const ll INF = 1e18;
ll a[MAXN];
ll suf_max[MAXN], suf_min[MAXN];

vector<int> distribute_candies(vector<int> c, vector<int> l, vector<int> r, vector<int> v) {
    int q = (int)c.size();
    int n = (int)l.size();
    vector<int> answer(q);
    a[1] = INF;
    a[2] = 0;
    for (int i = 3; i <= n + 2; i++) {
        a[i] = a[i - 1] + v[i - 3];
    }
    n += 2;
    suf_min[n] = suf_max[n] = a[n];
    for (int i = n - 1; i >= 1; i--) {
        suf_min[i] = min(suf_min[i + 1], a[i]);
        suf_max[i] = max(suf_max[i + 1], a[i]);
    }
    // for (int i = 1; i <= n; i++) cout << a[i] << " "; cout << endl;     
    for (int q_i = 0; q_i < q; q_i++) {
        int C = c[q_i], ans;
        ll cur_mx = a[n], cur_mn = a[n];
        int lo = 1, hi = n;
        while (lo <= hi) {
            int md = (lo + hi) / 2;
            if (suf_max[md] - suf_min[md] >= C) {
                ans = md;
                lo = md + 1;
            } else {
                hi = md - 1;
            }
        }
        if (a[ans] == suf_max[ans]) answer[q_i] = a[n] - suf_min[ans];
        else answer[q_i] = C - (suf_max[ans] - a[n]);
    }
    return answer;
}

컴파일 시 표준 에러 (stderr) 메시지

candies.cpp: In function 'std::vector<int> distribute_candies(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
candies.cpp:30:12: warning: unused variable 'cur_mx' [-Wunused-variable]
   30 |         ll cur_mx = a[n], cur_mn = a[n];
      |            ^~~~~~
candies.cpp:30:27: warning: unused variable 'cur_mn' [-Wunused-variable]
   30 |         ll cur_mx = a[n], cur_mn = a[n];
      |                           ^~~~~~
candies.cpp:41:34: warning: 'ans' may be used uninitialized in this function [-Wmaybe-uninitialized]
   41 |         if (a[ans] == suf_max[ans]) answer[q_i] = a[n] - suf_min[ans];
      |                       ~~~~~~~~~~~^
#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...