답안 #207720

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
207720 2020-03-08T16:56:32 Z DodgeBallMan 구경하기 (JOI13_watching) C++14
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>

using namespace std;

const int N = 2e3 + 10;
int n, p, q, now, prev, dp[N][N], vec[N];

bool chk( int m ) {
    for( int i = 0 ; i <= p ; i++ ) for( int j = 0 ; j <= q ; j++ ) {
        if( !i && !j ) continue ;
        dp[i][j] = 0;
        if( i ) dp[i][j] = upper_bound( vec + 1, vec + 1 + n, vec[dp[i-1][j]+1] + m - 1 ) - vec - 1;
        if( j ) dp[i][j] = max( dp[i][j], upper_bound( vec + 1, vec + 1 + n, vec[dp[i][j-1]+1] + m + m - 1 ) - vec - 1 );
        if( dp[i][j] == n ) return true;
    }
    return false;
}

int main()
{
    scanf("%d %d %d",&n,&p,&q);
    if( p + q >= n ) return !printf("1");
    for( int i = 1 ; i <= n ; i++ ) {
        scanf("%d",&vec[i]);
    } 
    sort( vec + 1, vec + 1 + n );
    int l = 1, r = 1e9;
    while( l < r ) {
        int m = l + r >> 1;
        if( chk( m ) ) r = m;
        else l = m + 1;
    }
    printf("%d",l);
    return 0;
}

Compilation message

watching.cpp: In function 'bool chk(int)':
watching.cpp:13:120: error: no matching function for call to 'max(int&, long int)'
         if( j ) dp[i][j] = max( dp[i][j], upper_bound( vec + 1, vec + 1 + n, vec[dp[i][j-1]+1] + m + m - 1 ) - vec - 1 );
                                                                                                                        ^
In file included from /usr/include/c++/7/bits/char_traits.h:39:0,
                 from /usr/include/c++/7/ios:40,
                 from /usr/include/c++/7/istream:38,
                 from /usr/include/c++/7/sstream:38,
                 from /usr/include/c++/7/complex:45,
                 from /usr/include/c++/7/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from watching.cpp:1:
/usr/include/c++/7/bits/stl_algobase.h:219:5: note: candidate: template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)
     max(const _Tp& __a, const _Tp& __b)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:219:5: note:   template argument deduction/substitution failed:
watching.cpp:13:120: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'long int')
         if( j ) dp[i][j] = max( dp[i][j], upper_bound( vec + 1, vec + 1 + n, vec[dp[i][j-1]+1] + m + m - 1 ) - vec - 1 );
                                                                                                                        ^
In file included from /usr/include/c++/7/bits/char_traits.h:39:0,
                 from /usr/include/c++/7/ios:40,
                 from /usr/include/c++/7/istream:38,
                 from /usr/include/c++/7/sstream:38,
                 from /usr/include/c++/7/complex:45,
                 from /usr/include/c++/7/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from watching.cpp:1:
/usr/include/c++/7/bits/stl_algobase.h:265:5: note: candidate: template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)
     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:265:5: note:   template argument deduction/substitution failed:
watching.cpp:13:120: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'long int')
         if( j ) dp[i][j] = max( dp[i][j], upper_bound( vec + 1, vec + 1 + n, vec[dp[i][j-1]+1] + m + m - 1 ) - vec - 1 );
                                                                                                                        ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:65,
                 from watching.cpp:1:
/usr/include/c++/7/bits/stl_algo.h:3462:5: note: candidate: template<class _Tp> constexpr _Tp std::max(std::initializer_list<_Tp>)
     max(initializer_list<_Tp> __l)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3462:5: note:   template argument deduction/substitution failed:
watching.cpp:13:120: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
         if( j ) dp[i][j] = max( dp[i][j], upper_bound( vec + 1, vec + 1 + n, vec[dp[i][j-1]+1] + m + m - 1 ) - vec - 1 );
                                                                                                                        ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:65,
                 from watching.cpp:1:
/usr/include/c++/7/bits/stl_algo.h:3468:5: note: candidate: template<class _Tp, class _Compare> constexpr _Tp std::max(std::initializer_list<_Tp>, _Compare)
     max(initializer_list<_Tp> __l, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
watching.cpp:13:120: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
         if( j ) dp[i][j] = max( dp[i][j], upper_bound( vec + 1, vec + 1 + n, vec[dp[i][j-1]+1] + m + m - 1 ) - vec - 1 );
                                                                                                                        ^
watching.cpp: In function 'int main()':
watching.cpp:29:19: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
         int m = l + r >> 1;
                 ~~^~~
watching.cpp:21:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d %d",&n,&p,&q);
     ~~~~~^~~~~~~~~~~~~~~~~~~~~
watching.cpp:24:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&vec[i]);
         ~~~~~^~~~~~~~~~~~~~