답안 #752257

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
752257 2023-06-02T15:23:28 Z salmon Meteors (POI11_met) C++14
컴파일 오류
0 ms 0 KB
//meteors
#include <bits/stdc++.h>
using namespace std;

long long int st[1200100];
vector<int> place[300100];
int N,M,h;
int k;
int g[300100];
vector<int> m[300100];
int s[300100];
int e[300100];
vector<vector<int>> days;
int ans[300100];
int con;

void build(int i, int s, int e){
    if(s == e){
        st[i] = 0;
        return;
    }

    st[i] = 0;

    build(i * 2,s,(s+e)/2);
    build(i*2+1,(s+e)/2+1, e);
}

void update(int i, int s, int e, int S, int E, int k){
    if(S <= s && e <= E){
        st[i] = st[i] + k;
        return;
    }

    int m = (s + e)/2;

    if(S <= m){
        update(i * 2, s, m,S,E,k);
    }
    if(m < E){
        update(i*2+1,m+1,e,S,E,k);
    }
}

long long int query(int i, int s, int e, int in){
    if(s == e){
        return st[i];
    }

    int m = (s + e)/2;

    if(in <= m){
        return min(con,st[i] + query(i*2, s, m, in));
    }
    else{
        return min(con,st[i] + query(i * 2+1,m + 1, e, in));
    }
}

int main(){
    con = 1000000000;

    scanf(" %d",&N);
    scanf(" %d",&M);

    for(int i = 1; i <= M; i++){
        scanf(" %d",&h);
        place[h].push_back(i);
    }

    for(int i = 1; i <= N; i++){
        scanf(" %d",&g[i]);
    }

    scanf(" %d",&k);

    for(int i = 1; i <= N; i++){
        s[i] = 1;
        e[i] = k + 1;
        m[(k + 2)/2].push_back(i);
    }

    for(int i = 1; i <= k ; i++){
        int s,e,a;

        scanf(" %d",&s);
        scanf(" %d",&e);
        scanf(" %d",&a);

        vector<int> v = {s,e,a};
        days.push_back(v);
    }

    bool flag = true;

    while(flag){
        flag = false;

        build(1,1,M);

        for(int i = 1; i <= k; i++){
            if(days[i-1][1] < days[i-1][0]){
                update(1,1,M,1,days[i-1][1],days[i-1][2]);
                update(1,1,M,days[i-1][0],M,days[i-1][2]);
            }
            else{
                update(1,1,M,days[i-1][0],days[i-1][1],days[i-1][2]);
            }

            /*for(int i = 1; i <= M; i++){
                printf("%lld ",query(1,1,M,i));
            }
            printf("\n");*/

            for(int j : m[i]){
                flag = true;

                long long int some = 0;

                for(int k : place[j]){
                    some = some + query(1,1,M,k);
                }

                if(some >= g[j]) e[j] = (s[j] + e[j])/2;
                else s[j] = (s[j] + e[j])/2 + 1;

                if(e[j] != s[j]) m[(s[j] + e[j])/2].push_back(j);
                else ans[j] = s[j];
            }

            m[i].clear();
        }
    }

    for(int i = 1; i <= N; i++){
        if(ans[i] == k + 1){
            printf("NIE\n");
        }
        else{
            printf("%d\n",ans[i]);
        }
    }
}

Compilation message

met.cpp: In function 'long long int query(int, int, int, int)':
met.cpp:53:52: error: no matching function for call to 'min(int&, long long int)'
   53 |         return min(con,st[i] + query(i*2, s, m, in));
      |                                                    ^
In file included from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from met.cpp:2:
/usr/include/c++/10/bits/stl_algobase.h:230:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  230 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
met.cpp:53:52: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'long long int')
   53 |         return min(con,st[i] + query(i*2, s, m, in));
      |                                                    ^
In file included from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from met.cpp:2:
/usr/include/c++/10/bits/stl_algobase.h:278:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  278 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
met.cpp:53:52: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'long long int')
   53 |         return min(con,st[i] + query(i*2, s, m, in));
      |                                                    ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from met.cpp:2:
/usr/include/c++/10/bits/stl_algo.h:3468:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3468 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
met.cpp:53:52: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   53 |         return min(con,st[i] + query(i*2, s, m, in));
      |                                                    ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from met.cpp:2:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3474:5: note:   template argument deduction/substitution failed:
met.cpp:53:52: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   53 |         return min(con,st[i] + query(i*2, s, m, in));
      |                                                    ^
met.cpp:56:59: error: no matching function for call to 'min(int&, long long int)'
   56 |         return min(con,st[i] + query(i * 2+1,m + 1, e, in));
      |                                                           ^
In file included from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from met.cpp:2:
/usr/include/c++/10/bits/stl_algobase.h:230:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  230 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
met.cpp:56:59: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'long long int')
   56 |         return min(con,st[i] + query(i * 2+1,m + 1, e, in));
      |                                                           ^
In file included from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from met.cpp:2:
/usr/include/c++/10/bits/stl_algobase.h:278:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  278 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
met.cpp:56:59: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'long long int')
   56 |         return min(con,st[i] + query(i * 2+1,m + 1, e, in));
      |                                                           ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from met.cpp:2:
/usr/include/c++/10/bits/stl_algo.h:3468:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3468 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
met.cpp:56:59: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   56 |         return min(con,st[i] + query(i * 2+1,m + 1, e, in));
      |                                                           ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from met.cpp:2:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3474:5: note:   template argument deduction/substitution failed:
met.cpp:56:59: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   56 |         return min(con,st[i] + query(i * 2+1,m + 1, e, in));
      |                                                           ^
met.cpp: In function 'int main()':
met.cpp:63:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   63 |     scanf(" %d",&N);
      |     ~~~~~^~~~~~~~~~
met.cpp:64:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   64 |     scanf(" %d",&M);
      |     ~~~~~^~~~~~~~~~
met.cpp:67:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   67 |         scanf(" %d",&h);
      |         ~~~~~^~~~~~~~~~
met.cpp:72:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   72 |         scanf(" %d",&g[i]);
      |         ~~~~~^~~~~~~~~~~~~
met.cpp:75:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   75 |     scanf(" %d",&k);
      |     ~~~~~^~~~~~~~~~
met.cpp:86:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   86 |         scanf(" %d",&s);
      |         ~~~~~^~~~~~~~~~
met.cpp:87:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   87 |         scanf(" %d",&e);
      |         ~~~~~^~~~~~~~~~
met.cpp:88:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   88 |         scanf(" %d",&a);
      |         ~~~~~^~~~~~~~~~