Submission #944131

#TimeUsernameProblemLanguageResultExecution timeMemory
944131teacupMeetings (IOI18_meetings)C++14
Compilation error
0 ms0 KiB
#include "meetings.h" #include <bits/stdc++.h> using namespace std; #define int long long #define ii pair<int,int> typedef vector<int> vi; #define iii tuple<int,int,int> typedef vector<ii> vii; typedef vector<iii> viii; typedef map<int,int> mii; #ifndef debug #define cerr if (0) cerr #endif const int INF=1e17; struct node { int s, e; int mn, mx, sum, add_val, set_val; bool lset; node *l, *r; node (int _s, int _e, const vi& A): s(_s), e(_e), mn(0), mx(0), sum(0), lset(0), add_val(0), set_val(0), l(NULL), r(NULL) { if (A == NULL) return; if (s == e) mn = mx = sum = A[s]; else { l = new node(s, (s+e)>>1, A), r = new node((s+e+2)>>1, e, A); combine(); } } void create_children() { if (s == e) return; if (l != NULL) return; int m = (s+e)>>1; l = new node(s, m); r = new node(m+1, e); } void self_set(int v) { lset = 1; mn = mx = set_val = v; sum = v * (e-s+1); add_val = 0; } void self_add(int v) { if (lset) { self_set(v + set_val); return; } mn += v, mx += v, add_val += v; sum += v*(e-s+1); } void lazy_propagate() { if (s == e) return; if (lset) { l->self_set(set_val), r->self_set(set_val); lset = set_val = 0; } if (add_val != 0) { l->self_add(add_val), r->self_add(add_val); add_val = 0; } } void combine() { if (l == NULL) return; sum = l->sum + r->sum; mn = min(l->mn, r->mn); mx = max(l->mx, r->mx); } #define UPDATE(name)\ void name(int x, int y, int v) { \ if (s == x && e == y) { self_##name(v); return; } \ int m = (s+e)>>1; \ create_children(); lazy_propagate(); \ if (x <= m) l->name(x, min(y, m), v); \ if (y > m) r->name(max(x, m+1), y, v); \ combine(); \ } UPDATE(add) //generates add UPDATE(set) //generates set #define QUERY(name, fn, var, lazyfn)\ int range_##name(int x, int y) {\ if (s == x && e == y) return var; \ if (l == NULL || lset) return lazyfn(var);\ int m = (s+e)>>1; lazy_propagate(); \ if (y <= m) return l->range_##name(x, y); \ if (x > m) return r->range_##name(x, y); \ return fn(l->range_##name(x, m), r->range_##name(m+1, y)) ; \ } #define SAME(var) (var) #define PART(var) ((var) /(e-s+1) * (y-x+1)) #define SUM(a, b) ((a)+(b)) QUERY(min, min, mn, SAME) //generates range_min QUERY(max, max, mx, SAME) //generates range_max QUERY(sum, SUM, sum, PART) //generates range_sum ~node() { if (l != NULL) delete l; if (r != NULL) delete r; } } *root; vi minimum_costs(vector<int32_t> H, vector<int32_t> L, vector<int32_t> R) { int Q = L.size(); vi C; root = new node(0, H.size()+5, H); for (int _=0; _<Q; _++){ int L_ = L[_], R_ = R[_], actual_ans=INF; for (int i=L_; i<=R_; i++){ int ans=0; for (int j=L_; j<=R_; j++){ if (i==j) ans+=H[i]; else if (i<j){ ans+=root->range_max(i,j); }else{ ans+=root->range_max(j,i); } } actual_ans = min(ans, actual_ans); } C.push_back(actual_ans); } return C; }

Compilation message (stderr)

meetings.cpp: In constructor 'node::node(long long int, long long int, const vi&)':
meetings.cpp:22:10: warning: 'node::lset' will be initialized after [-Wreorder]
   22 |     bool lset;
      |          ^~~~
meetings.cpp:21:22: warning:   'long long int node::add_val' [-Wreorder]
   21 |     int mn, mx, sum, add_val, set_val;
      |                      ^~~~~~~
meetings.cpp:24:5: warning:   when initialized here [-Wreorder]
   24 |     node (int _s, int _e, const vi& A): s(_s), e(_e), mn(0), mx(0), sum(0), lset(0), add_val(0), set_val(0), l(NULL), r(NULL) {
      |     ^~~~
meetings.cpp:25:15: error: no match for 'operator==' (operand types are 'const vi' {aka 'const std::vector<long long int>'} and 'long int')
   25 |         if (A == NULL) return;
      |               ^
In file included from /usr/include/c++/10/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110,
                 from meetings.cpp:2:
/usr/include/c++/10/bits/regex.h:1035:5: note: candidate: 'template<class _BiIter> bool std::__cxx11::operator==(const std::__cxx11::sub_match<_BiIter>&, const std::__cxx11::sub_match<_BiIter>&)'
 1035 |     operator==(const sub_match<_BiIter>& __lhs, const sub_match<_BiIter>& __rhs)
      |     ^~~~~~~~
/usr/include/c++/10/bits/regex.h:1035:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   'const vi' {aka 'const std::vector<long long int>'} is not derived from 'const std::__cxx11::sub_match<_BiIter>'
   25 |         if (A == NULL) return;
      |                  ^~~~
In file included from /usr/include/c++/10/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110,
                 from meetings.cpp:2:
/usr/include/c++/10/bits/regex.h:1131:5: note: candidate: 'template<class _Bi_iter, class _Ch_traits, class _Ch_alloc> bool std::__cxx11::operator==(std::__cxx11::__sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>&, const std::__cxx11::sub_match<_BiIter>&)'
 1131 |     operator==(const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/regex.h:1131:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   'const vi' {aka 'const std::vector<long long int>'} is not derived from 'std::__cxx11::__sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>'
   25 |         if (A == NULL) return;
      |                  ^~~~
In file included from /usr/include/c++/10/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110,
                 from meetings.cpp:2:
/usr/include/c++/10/bits/regex.h:1206:5: note: candidate: 'template<class _Bi_iter, class _Ch_traits, class _Ch_alloc> bool std::__cxx11::operator==(const std::__cxx11::sub_match<_BiIter>&, std::__cxx11::__sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>&)'
 1206 |     operator==(const sub_match<_Bi_iter>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/regex.h:1206:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   'const vi' {aka 'const std::vector<long long int>'} is not derived from 'const std::__cxx11::sub_match<_BiIter>'
   25 |         if (A == NULL) return;
      |                  ^~~~
In file included from /usr/include/c++/10/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110,
                 from meetings.cpp:2:
/usr/include/c++/10/bits/regex.h:1298:5: note: candidate: 'template<class _Bi_iter> bool std::__cxx11::operator==(const typename std::iterator_traits<_Iter>::value_type*, const std::__cxx11::sub_match<_BiIter>&)'
 1298 |     operator==(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/regex.h:1298:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   mismatched types 'const std::__cxx11::sub_match<_BiIter>' and 'long int'
   25 |         if (A == NULL) return;
      |                  ^~~~
In file included from /usr/include/c++/10/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110,
                 from meetings.cpp:2:
/usr/include/c++/10/bits/regex.h:1373:5: note: candidate: 'template<class _Bi_iter> bool std::__cxx11::operator==(const std::__cxx11::sub_match<_BiIter>&, const typename std::iterator_traits<_Iter>::value_type*)'
 1373 |     operator==(const sub_match<_Bi_iter>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/regex.h:1373:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   'const vi' {aka 'const std::vector<long long int>'} is not derived from 'const std::__cxx11::sub_match<_BiIter>'
   25 |         if (A == NULL) return;
      |                  ^~~~
In file included from /usr/include/c++/10/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110,
                 from meetings.cpp:2:
/usr/include/c++/10/bits/regex.h:1466:5: note: candidate: 'template<class _Bi_iter> bool std::__cxx11::operator==(const typename std::iterator_traits<_Iter>::value_type&, const std::__cxx11::sub_match<_BiIter>&)'
 1466 |     operator==(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/regex.h:1466:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   mismatched types 'const std::__cxx11::sub_match<_BiIter>' and 'long int'
   25 |         if (A == NULL) return;
      |                  ^~~~
In file included from /usr/include/c++/10/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110,
                 from meetings.cpp:2:
/usr/include/c++/10/bits/regex.h:1545:5: note: candidate: 'template<class _Bi_iter> bool std::__cxx11::operator==(const std::__cxx11::sub_match<_BiIter>&, const typename std::iterator_traits<_Iter>::value_type&)'
 1545 |     operator==(const sub_match<_Bi_iter>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/regex.h:1545:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   'const vi' {aka 'const std::vector<long long int>'} is not derived from 'const std::__cxx11::sub_match<_BiIter>'
   25 |         if (A == NULL) return;
      |                  ^~~~
In file included from /usr/include/c++/10/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110,
                 from meetings.cpp:2:
/usr/include/c++/10/bits/regex.h:2101:5: note: candidate: 'template<class _Bi_iter, class _Alloc> bool std::__cxx11::operator==(const std::__cxx11::match_results<_BiIter, _Alloc>&, const std::__cxx11::match_results<_BiIter, _Alloc>&)'
 2101 |     operator==(const match_results<_Bi_iter, _Alloc>& __m1,
      |     ^~~~~~~~
/usr/include/c++/10/bits/regex.h:2101:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   'const vi' {aka 'const std::vector<long long int>'} is not derived from 'const std::__cxx11::match_results<_BiIter, _Alloc>'
   25 |         if (A == NULL) return;
      |                  ^~~~
In file included from /usr/include/c++/10/bits/stl_algobase.h:64,
                 from /usr/include/c++/10/vector:60,
                 from meetings.h:3,
                 from meetings.cpp:1:
/usr/include/c++/10/bits/stl_pair.h:466:5: note: candidate: 'template<class _T1, class _T2> constexpr bool std::operator==(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)'
  466 |     operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_pair.h:466:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   'const vi' {aka 'const std::vector<long long int>'} is not derived from 'const std::pair<_T1, _T2>'
   25 |         if (A == NULL) return;
      |                  ^~~~
In file included from /usr/include/c++/10/bits/stl_algobase.h:67,
                 from /usr/include/c++/10/vector:60,
                 from meetings.h:3,
                 from meetings.cpp:1:
/usr/include/c++/10/bits/stl_iterator.h:360:5: note: candidate: 'template<class _Iterator> bool std::operator==(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)'
  360 |     operator==(const reverse_iterator<_Iterator>& __x,
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_iterator.h:360:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   'const vi' {aka 'const std::vector<long long int>'} is not derived from 'const std::reverse_iterator<_Iterator>'
   25 |         if (A == NULL) return;
      |                  ^~~~
In file included from /usr/include/c++/10/bits/stl_algobase.h:67,
                 from /usr/include/c++/10/vector:60,
                 from meetings.h:3,
                 from meetings.cpp:1:
/usr/include/c++/10/bits/stl_iterator.h:398:5: note: candidate: 'template<class _IteratorL, class _IteratorR> bool std::operator==(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&)'
  398 |     operator==(const reverse_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_iterator.h:398:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   'const vi' {aka 'const std::vector<long long int>'} is not derived from 'const std::reverse_iterator<_Iterator>'
   25 |         if (A == NULL) return;
      |                  ^~~~
In file included from /usr/include/c++/10/bits/stl_algobase.h:67,
                 from /usr/include/c++/10/vector:60,
                 from meetings.h:3,
                 from meetings.cpp:1:
/usr/include/c++/10/bits/stl_iterator.h:1427:5: note: candidate: 'template<class _IteratorL, class _IteratorR> bool std::operator==(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorR>&)'
 1427 |     operator==(const move_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_iterator.h:1427:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   'const vi' {aka 'const std::vector<long long int>'} is not derived from 'const std::move_iterator<_IteratorL>'
   25 |         if (A == NULL) return;
      |                  ^~~~
In file included from /usr/include/c++/10/bits/stl_algobase.h:67,
                 from /usr/include/c++/10/vector:60,
                 from meetings.h:3,
                 from meetings.cpp:1:
/usr/include/c++/10/bits/stl_iterator.h:1495:5: note: candidate: 'template<class _Iterator> bool std::operator==(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorL>&)'
 1495 |     operator==(const move_iterator<_Iterator>& __x,
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_iterator.h:1495:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   'const vi' {aka 'const std::vector<long long int>'} is not derived from 'const std::move_iterator<_IteratorL>'
   25 |         if (A == NULL) return;
      |                  ^~~~
In file included from /usr/include/c++/10/vector:64,
                 from meetings.h:3,
                 from meetings.cpp:1:
/usr/include/c++/10/bits/allocator.h:206:5: note: candidate: 'template<class _T1, class _T2> bool std::operator==(const std::allocator<_Tp1>&, const std::allocator<_T2>&)'
  206 |     operator==(const allocator<_T1>&, const allocator<_T2>&)
      |     ^~~~~~~~
/usr/include/c++/10/bits/allocator.h:206:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   'const vi' {aka 'const std::vector<long long int>'} is not derived from 'const std::allocator<_Tp1>'
   25 |         if (A == NULL) return;
      |                  ^~~~
In file included from /usr/include/c++/10/vector:67,
                 from meetings.h:3,
                 from meetings.cpp:1:
/usr/include/c++/10/bits/stl_vector.h:1892:5: note: candidate: 'template<class _Tp, class _Alloc> bool std::operator==(const std::vector<_Tp, _Alloc>&, const std::vector<_Tp, _Alloc>&)'
 1892 |     operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_vector.h:1892:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   mismatched types 'const std::vector<_Tp, _Alloc>' and 'long int'
   25 |         if (A == NULL) return;
      |                  ^~~~
In file included from /usr/include/c++/10/iosfwd:40,
                 from /usr/include/c++/10/ios:38,
                 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 meetings.cpp:2:
/usr/include/c++/10/bits/postypes.h:222:5: note: candidate: 'template<class _StateT> bool std::operator==(const std::fpos<_StateT>&, const std::fpos<_StateT>&)'
  222 |     operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
      |     ^~~~~~~~
/usr/include/c++/10/bits/postypes.h:222:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   'const vi' {aka 'const std::vector<long long int>'} is not derived from 'const std::fpos<_StateT>'
   25 |         if (A == NULL) return;
      |                  ^~~~
In file included from /usr/include/c++/10/string:55,
                 from /usr/include/c++/10/bits/locale_classes.h:40,
                 from /usr/include/c++/10/bits/ios_base.h:41,
                 from /usr/include/c++/10/ios:42,
                 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 meetings.cpp:2:
/usr/include/c++/10/bits/basic_string.h:6153:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> bool std::operator==(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&)'
 6153 |     operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/basic_string.h:6153:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/uchar.h:29,
                 from /usr/include/c++/10/cuchar:53,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:61,
                 from meetings.cpp:2:
meetings.cpp:25:18: note:   'const vi' {aka 'const std::vector<long long int>'} is not derived from 'const std::__c