답안 #1079234

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1079234 2024-08-28T12:13:53 Z vjudge1 메기 농장 (IOI22_fish) C++17
컴파일 오류
0 ms 0 KB
#include "fish.h"

#include <bits/stdc++.h>

using namespace std;

long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y,
                      std::vector<int> W) {
    
    vector<vector<long long>>dp(N+1, vector<long long>(N+1, 0));
    vector<vector<pair<int,long long>>>v(N);
    for(int i=0; i<M; ++i) {
        v[X[i]].push_back({Y[i], W[i]});
    }
    for(int i=0; i<N; ++i) sort(v[i].begin(), v[i].end());
    for(int i=1; i<=N; ++i) {
        dp[i][0] = dp[i-1][N];
        int cnt1 = 0, cnt2 = 0, sum = 0, prev = 0;
        for(int j=1; j<=N; ++j) {
            dp[i][j] = max(dp[i][j-1], dp[i-1][j]);
            if(!v[i].empty() && cnt2 != v[i].size() && v[i][cnt2].first == j - 1) {
                sum += v[i+1][cnt2].second;
                ++cnt2; 
            }
            if(i != 1 && !v[i-2].empty() && cnt1 != v[i-2].size() && v[i-2][cnt1].first == j - 1) {
                prev += v[i-2][cnt1].second;
                prev = max(prev, dp[i-1][j-1] + v[i-2][cnt1].second);
                ++cnt1;
            } 
            dp[i][j] = max(dp[i][j], prev + sum);
        }
    }
    
    return dp[N][N];
}

Compilation message

fish.cpp: In function 'long long int max_weights(int, int, std::vector<int>, std::vector<int>, std::vector<int>)':
fish.cpp:21:38: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |             if(!v[i].empty() && cnt2 != v[i].size() && v[i][cnt2].first == j - 1) {
      |                                 ~~~~~^~~~~~~~~~~~~~
fish.cpp:25:50: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |             if(i != 1 && !v[i-2].empty() && cnt1 != v[i-2].size() && v[i-2][cnt1].first == j - 1) {
      |                                             ~~~~~^~~~~~~~~~~~~~~~
fish.cpp:27:68: error: no matching function for call to 'max(int&, __gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type)'
   27 |                 prev = max(prev, dp[i-1][j-1] + v[i-2][cnt1].second);
      |                                                                    ^
In file included from /usr/include/c++/10/vector:60,
                 from fish.h:1,
                 from fish.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:254:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  254 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:254:5: note:   template argument deduction/substitution failed:
fish.cpp:27:68: note:   deduced conflicting types for parameter 'const _Tp' ('int' and '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'})
   27 |                 prev = max(prev, dp[i-1][j-1] + v[i-2][cnt1].second);
      |                                                                    ^
In file included from /usr/include/c++/10/vector:60,
                 from fish.h:1,
                 from fish.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:300:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  300 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:300:5: note:   template argument deduction/substitution failed:
fish.cpp:27:68: note:   deduced conflicting types for parameter 'const _Tp' ('int' and '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'})
   27 |                 prev = max(prev, dp[i-1][j-1] + v[i-2][cnt1].second);
      |                                                                    ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from fish.cpp:3:
/usr/include/c++/10/bits/stl_algo.h:3480:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(std::initializer_list<_Tp>)'
 3480 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3480:5: note:   template argument deduction/substitution failed:
fish.cpp:27:68: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   27 |                 prev = max(prev, dp[i-1][j-1] + v[i-2][cnt1].second);
      |                                                                    ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from fish.cpp:3:
/usr/include/c++/10/bits/stl_algo.h:3486:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(std::initializer_list<_Tp>, _Compare)'
 3486 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3486:5: note:   template argument deduction/substitution failed:
fish.cpp:27:68: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   27 |                 prev = max(prev, dp[i-1][j-1] + v[i-2][cnt1].second);
      |                                                                    ^
fish.cpp:30:48: error: no matching function for call to 'max(__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type&, int)'
   30 |             dp[i][j] = max(dp[i][j], prev + sum);
      |                                                ^
In file included from /usr/include/c++/10/vector:60,
                 from fish.h:1,
                 from fish.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:254:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  254 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:254:5: note:   template argument deduction/substitution failed:
fish.cpp:30:48: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   30 |             dp[i][j] = max(dp[i][j], prev + sum);
      |                                                ^
In file included from /usr/include/c++/10/vector:60,
                 from fish.h:1,
                 from fish.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:300:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  300 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:300:5: note:   template argument deduction/substitution failed:
fish.cpp:30:48: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   30 |             dp[i][j] = max(dp[i][j], prev + sum);
      |                                                ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from fish.cpp:3:
/usr/include/c++/10/bits/stl_algo.h:3480:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(std::initializer_list<_Tp>)'
 3480 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3480:5: note:   template argument deduction/substitution failed:
fish.cpp:30:48: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   30 |             dp[i][j] = max(dp[i][j], prev + sum);
      |                                                ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from fish.cpp:3:
/usr/include/c++/10/bits/stl_algo.h:3486:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(std::initializer_list<_Tp>, _Compare)'
 3486 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3486:5: note:   template argument deduction/substitution failed:
fish.cpp:30:48: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   30 |             dp[i][j] = max(dp[i][j], prev + sum);
      |                                                ^