제출 #1229543

#제출 시각아이디문제언어결과실행 시간메모리
1229543ivaziva벽 (IOI14_wall)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #include "wall.h" #define MAXN 2000001 struct Segtree{ int sum;int maksi,mini; int drugimaksi,drugimini; int brojmaksi,brojmini; }; Segtree seg[MAXN*4]; Segtree mergee(Segtree seg1,Segtree seg2) { Segtree ans;ans.sum=seg1.sum+seg2.sum; if (seg1.maksi==seg2.maksi) {ans.maksi=seg1.maksi;ans.drugimaksi=max(seg1.drugimaksi,seg2.drugimaksi);ans.brojmaksi=seg1.brojmaksi+seg2.brojmaksi;} else if (seg1.maksi>seg2.maksi) {ans.maksi=seg1.maksi;ans.drugimaksi=max(seg1.drugimaksi,seg2.maksi);ans.brojmaksi=seg1.brojmaksi;} else {ans.maksi=seg2.maksi;ans.drugimaksi=max(seg1.maksi,seg2.drugimaksi);ans.brojmaksi=seg2.brojmaksi;} if (seg1.mini==seg2.mini) {ans.mini=seg1.mini;ans.drugimini=min(seg1.drugimini,seg2.drugimini);ans.brojmini=seg1.brojmini+seg2.brojmini;} else if (seg1.mini<seg2.mini) {ans.mini=seg1.mini;ans.drugimini=min(seg1.drugimini,seg2.mini);ans.brojmini=seg1.brojmini;} else {ans.mini=seg2.mini;ans.drugimini=min(seg1.mini,seg2.drugimini);ans.brojmini=seg2.brojmini;} return ans; } void build(int node,int l,int r) { if (l==r) seg[node]={0,0,0,-INT_MAX,INT_MAX,1,1}; else {int mid=(l+r)/2;build(2*node,l,mid);build(2*node+1,mid+1,r);seg[node]=mergee(seg[2*node],seg[2*node+1]);} } void pushmin(int node,int l,int r,int x) { if (seg[node].maksi<=x) return; seg[node].sum+=(long long)seg[node].brojmaksi*(x-seg[node].maksi);seg[node].maksi=x; if (seg[node].mini>x) seg[node].mini=x; if (l!=r) {int mid=(l+r)/2;pushmin(2*node,l,mid,x);pushmin(2*node+1,mid+1,r,x);} } void pushmax(int node,int l,int r,int x) { if (seg[node].mini>=x) return; seg[node].sum+=(long long)seg[node].brojmini*(x-seg[node].mini);seg[node].mini=x; if (seg[node].maksi<x) seg[node].maksi=x; if (l!=r) {int mid=(l+r)/2;pushmax(2*node,l,mid,x);pushmax(2*node+1,mid+1,r,x);} } void updatemin(int node,int l,int r,int a,int b,int x) { if (a>b or seg[node].maksi<=x) return; if (l==a and r==b and seg[node].drugimaksi<x) {pushmin(node,l,r,x);return;} int mid=(l+r)/2;updatemin(2*node,l,mid,a,min(b,mid),x);updatemin(2*node+1,mid+1,r,max(a,mid+1),b,x); seg[node]=mergee(seg[2*node],seg[2*node+1]); } void updatemax(int node,int l,int r,int a,int b,int x) { if (a>b or seg[node].mini>=x) return; if (l==a and r==b and seg[node].drugimini>x) {pushmax(node,l,r,x);return;} int mid=(l+r)/2;updatemax(2*node,l,mid,a,min(b,mid),x);updatemax(2*node+1,mid+1,r,max(a,mid+1),b,x); seg[node]=mergee(seg[2*node],seg[2*node+1]); } int query(int node,int l,int r,int a,int b) { if (a>b) return 0; if (l==a and r==b) return seg[node].sum; int mid=(l+r)/2;return query(2*node,l,mid,a,min(b,mid))+query(2*node+1,mid+1,r,max(a,mid+1),b); } void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]) { build(1,1,n); for (int i=1;i<=k;i++) { if (op[i]==1) updatemax(1,1,n,left[i],right[i],height[i]); else updatemin(1,1,n,left[i],right[i],height[i]); } for (int i=1;i<=n;i++) finalHeight[i]=query(1,1,n,i,i); }

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

wall.cpp: In function 'Segtree mergee(Segtree, Segtree)':
wall.cpp:17:70: error: 'max' was not declared in this scope
   17 |     if (seg1.maksi==seg2.maksi) {ans.maksi=seg1.maksi;ans.drugimaksi=max(seg1.drugimaksi,seg2.drugimaksi);ans.brojmaksi=seg1.brojmaksi+seg2.brojmaksi;}
      |                                                                      ^~~
wall.cpp:17:70: note: suggested alternatives:
In file included from /usr/include/c++/11/string:52,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from wall.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3467:5: note:   'std::max'
 3467 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
In file included from /usr/include/c++/11/algorithm:64,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from wall.cpp:1:
/usr/include/c++/11/bits/ranges_algo.h:3011:29: note:   'std::ranges::max'
 3011 |   inline constexpr __max_fn max{};
      |                             ^~~
wall.cpp:18:74: error: 'max' was not declared in this scope
   18 |     else if (seg1.maksi>seg2.maksi) {ans.maksi=seg1.maksi;ans.drugimaksi=max(seg1.drugimaksi,seg2.maksi);ans.brojmaksi=seg1.brojmaksi;}
      |                                                                          ^~~
wall.cpp:18:74: note: suggested alternatives:
In file included from /usr/include/c++/11/string:52,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from wall.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3467:5: note:   'std::max'
 3467 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
In file included from /usr/include/c++/11/algorithm:64,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from wall.cpp:1:
/usr/include/c++/11/bits/ranges_algo.h:3011:29: note:   'std::ranges::max'
 3011 |   inline constexpr __max_fn max{};
      |                             ^~~
wall.cpp:19:47: error: 'max' was not declared in this scope
   19 |     else {ans.maksi=seg2.maksi;ans.drugimaksi=max(seg1.maksi,seg2.drugimaksi);ans.brojmaksi=seg2.brojmaksi;}
      |                                               ^~~
wall.cpp:19:47: note: suggested alternatives:
In file included from /usr/include/c++/11/string:52,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from wall.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3467:5: note:   'std::max'
 3467 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
In file included from /usr/include/c++/11/algorithm:64,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from wall.cpp:1:
/usr/include/c++/11/bits/ranges_algo.h:3011:29: note:   'std::ranges::max'
 3011 |   inline constexpr __max_fn max{};
      |                             ^~~
wall.cpp:20:65: error: 'min' was not declared in this scope
   20 |     if (seg1.mini==seg2.mini) {ans.mini=seg1.mini;ans.drugimini=min(seg1.drugimini,seg2.drugimini);ans.brojmini=seg1.brojmini+seg2.brojmini;}
      |                                                                 ^~~
wall.cpp:20:65: note: suggested alternatives:
In file included from /usr/include/c++/11/string:52,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from wall.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3455:5: note:   'std::min'
 3455 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
In file included from /usr/include/c++/11/algorithm:64,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from wall.cpp:1:
/usr/include/c++/11/bits/ranges_algo.h:2957:29: note:   'std::ranges::min'
 2957 |   inline constexpr __min_fn min{};
      |                             ^~~
wall.cpp:21:69: error: 'min' was not declared in this scope
   21 |     else if (seg1.mini<seg2.mini) {ans.mini=seg1.mini;ans.drugimini=min(seg1.drugimini,seg2.mini);ans.brojmini=seg1.brojmini;}
      |                                                                     ^~~
wall.cpp:21:69: note: suggested alternatives:
In file included from /usr/include/c++/11/string:52,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from wall.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3455:5: note:   'std::min'
 3455 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
In file included from /usr/include/c++/11/algorithm:64,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from wall.cpp:1:
/usr/include/c++/11/bits/ranges_algo.h:2957:29: note:   'std::ranges::min'
 2957 |   inline constexpr __min_fn min{};
      |                             ^~~
wall.cpp:22:44: error: 'min' was not declared in this scope
   22 |     else {ans.mini=seg2.mini;ans.drugimini=min(seg1.mini,seg2.drugimini);ans.brojmini=seg2.brojmini;}
      |                                            ^~~
wall.cpp:22:44: note: suggested alternatives:
In file included from /usr/include/c++/11/string:52,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from wall.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3455:5: note:   'std::min'
 3455 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
In file included from /usr/include/c++/11/algorithm:64,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from wall.cpp:1:
/usr/include/c++/11/bits/ranges_algo.h:2957:29: note:   'std::ranges::min'
 2957 |   inline constexpr __min_fn min{};
      |                             ^~~
wall.cpp: In function 'void updatemin(int, int, int, int, int, int)':
wall.cpp:52:46: error: 'min' was not declared in this scope
   52 |     int mid=(l+r)/2;updatemin(2*node,l,mid,a,min(b,mid),x);updatemin(2*node+1,mid+1,r,max(a,mid+1),b,x);
      |                                              ^~~
wall.cpp:52:46: note: suggested alternatives:
In file included from /usr/include/c++/11/string:52,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from wall.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3455:5: note:   'std::min'
 3455 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
In file included from /usr/include/c++/11/algorithm:64,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from wall.cpp:1:
/usr/include/c++/11/bits/ranges_algo.h:2957:29: note:   'std::ranges::min'
 2957 |   inline constexpr __min_fn min{};
      |                             ^~~
wall.cpp:52:87: error: 'max' was not declared in this scope
   52 |     int mid=(l+r)/2;updatemin(2*node,l,mid,a,min(b,mid),x);updatemin(2*node+1,mid+1,r,max(a,mid+1),b,x);
      |                                                                                       ^~~
wall.cpp:52:87: note: suggested alternatives:
In file included from /usr/include/c++/11/string:52,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from wall.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3467:5: note:   'std::max'
 3467 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
In file included from /usr/include/c++/11/algorithm:64,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from wall.cpp:1:
/usr/include/c++/11/bits/ranges_algo.h:3011:29: note:   'std::ranges::max'
 3011 |   inline constexpr __max_fn max{};
      |                             ^~~
wall.cpp: In function 'void updatemax(int, int, int, int, int, int)':
wall.cpp:60:46: error: 'min' was not declared in this scope
   60 |     int mid=(l+r)/2;updatemax(2*node,l,mid,a,min(b,mid),x);updatemax(2*node+1,mid+1,r,max(a,mid+1),b,x);
      |                                              ^~~
wall.cpp:60:46: note: suggested alternatives:
In file included from /usr/include/c++/11/string:52,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from wall.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3455:5: note:   'std::min'
 3455 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
In file included from /usr/include/c++/11/algorithm:64,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from wall.cpp:1:
/usr/include/c++/11/bits/ranges_algo.h:2957:29: note:   'std::ranges::min'
 2957 |   inline constexpr __min_fn min{};
      |                             ^~~
wall.cpp:60:87: error: 'max' was not declared in this scope
   60 |     int mid=(l+r)/2;updatemax(2*node,l,mid,a,min(b,mid),x);updatemax(2*node+1,mid+1,r,max(a,mid+1),b,x);
      |                                                                                       ^~~
wall.cpp:60:87: note: suggested alternatives:
In file included from /usr/include/c++/11/string:52,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from wall.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3467:5: note:   'std::max'
 3467 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
In file included from /usr/include/c++/11/algorithm:64,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from wall.cpp:1:
/usr/include/c++/11/bits/ranges_algo.h:3011:29: note:   'std::ranges::max'
 3011 |   inline constexpr __max_fn max{};
      |                             ^~~
wall.cpp: In function 'int query(int, int, int, int, int)':
wall.cpp:68:49: error: 'min' was not declared in this scope
   68 |     int mid=(l+r)/2;return query(2*node,l,mid,a,min(b,mid))+query(2*node+1,mid+1,r,max(a,mid+1),b);
      |                                                 ^~~
wall.cpp:68:49: note: suggested alternatives:
In file included from /usr/include/c++/11/string:52,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from wall.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3455:5: note:   'std::min'
 3455 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
In file included from /usr/include/c++/11/algorithm:64,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from wall.cpp:1:
/usr/include/c++/11/bits/ranges_algo.h:2957:29: note:   'std::ranges::min'
 2957 |   inline constexpr __min_fn min{};
      |                             ^~~
wall.cpp:68:84: error: 'max' was not declared in this scope
   68 |     int mid=(l+r)/2;return query(2*node,l,mid,a,min(b,mid))+query(2*node+1,mid+1,r,max(a,mid+1),b);
      |                                                                                    ^~~
wall.cpp:68:84: note: suggested alternatives:
In file included from /usr/include/c++/11/string:52,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from wall.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3467:5: note:   'std::max'
 3467 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
In file included from /usr/include/c++/11/algorithm:64,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from wall.cpp:1:
/usr/include/c++/11/bits/ranges_algo.h:3011:29: note:   'std::ranges::max'
 3011 |   inline constexpr __max_fn max{};
      |                             ^~~