제출 #1354880

#제출 시각아이디문제언어결과실행 시간메모리
1354880Charizard2021쌀 창고 (IOI11_ricehub)C++20
컴파일 에러
0 ms0 KiB
#include "ricehub.h"
#include<bits/stdc++.h>
using namespace std;
int besthub(int n, int L, int X[], long long B){
    vector<long long> x(n);
    vector<long long> pref(n);
    map<long long, long long> mp;
    for(long long i = 0; i < n; i++){
        x[i] = X[i];
        mp[x[i]]++;
        pref[i] = x[i];
        if(i != 0){
            pref[i] += pref[i - 1];
        }
    }
    int ans = 0;
    for(int i = 0; i < n; i++){
        long long low = 0;
        long long high = 1e9;
        long long res = 0;
        while(low <= high){
            long long mid = (low + high)/2;
            int L = lower_bound(x.begin(), x.end(), x[i] - mid) - x.begin();
            int R = upper_bound(x.begin(), x.end(), x[i] + mid) - x.begin();
            R--;
            long long val3 = (i == 0 ? 0 : pref[i - 1]) - (L == 0 ? 0 : pref[L - 1]);
            long long val1 = x[i] * (i - L) - val3;
            long long val4 = pref[R] - pref[i];
            long long val2 = val4 - (R - i) * x[i];
            if(val1 + val2 <= B){
                res = mid;
                low = mid + 1;
            }
            else{
                high = mid - 1;
            }
        }
        int L = lower_bound(x.begin(), x.end(), x[i] - mid) - x.begin();
        int R = upper_bound(x.begin(), x.end(), x[i] + mid) - x.begin();
        R--;
        long long val3 = (i == 0 ? 0 : pref[i - 1]) - (L == 0 ? 0 : pref[L - 1]);
        long long val1 = x[i] * (i - L) - val3;
        long long val4 = pref[R] - pref[i];
        long long val2 = val4 - (R - i) * x[i];
        long long val = (B - val1 - val2)/(mid + 1);
        val = min(val, mp[x[i] - mid - 1] + mp[x[i] + mid + 1]);
        ans = max(ans, R - L + 1 + val);
    }
    return ans;
}

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

ricehub.cpp: In function 'int besthub(int, int, int*, long long int)':
ricehub.cpp:38:56: error: 'mid' was not declared in this scope
   38 |         int L = lower_bound(x.begin(), x.end(), x[i] - mid) - x.begin();
      |                                                        ^~~
ricehub.cpp:47:18: error: no matching function for call to 'max(int&, long long int)'
   47 |         ans = max(ans, R - L + 1 + val);
      |               ~~~^~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:60,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51,
                 from ricehub.cpp:2:
/usr/include/c++/13/bits/stl_algobase.h:257:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  257 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/13/bits/stl_algobase.h:257:5: note:   template argument deduction/substitution failed:
ricehub.cpp:47:18: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'long long int')
   47 |         ans = max(ans, R - L + 1 + val);
      |               ~~~^~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/stl_algobase.h:303:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  303 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/13/bits/stl_algobase.h:303:5: note:   template argument deduction/substitution failed:
ricehub.cpp:47:18: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'long long int')
   47 |         ans = max(ans, R - L + 1 + val);
      |               ~~~^~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:61:
/usr/include/c++/13/bits/stl_algo.h:5795:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(initializer_list<_Tp>)'
 5795 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/13/bits/stl_algo.h:5795:5: note:   template argument deduction/substitution failed:
ricehub.cpp:47:18: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   47 |         ans = max(ans, R - L + 1 + val);
      |               ~~~^~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/stl_algo.h:5805:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(initializer_list<_Tp>, _Compare)'
 5805 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/13/bits/stl_algo.h:5805:5: note:   template argument deduction/substitution failed:
ricehub.cpp:47:18: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   47 |         ans = max(ans, R - L + 1 + val);
      |               ~~~^~~~~~~~~~~~~~~~~~~~~~