谁能看看我哪里错了?
#include <bits/stdc++.h>
#define lid id << 1
#define rid id << 1 | 1
#define int long long
using namespace std;
int n,m;
struct srg{
int l,r;
int minn,maxx;
}tr[1000005 * 5];
void pushdown(int id){
tr[lid].maxx = max(tr[lid].maxx,tr[id].maxx);
tr[lid].maxx = min(tr[lid].maxx,tr[id].minn);
tr[lid].minn = min(tr[lid].minn,tr[id].minn);
tr[lid].minn = max(tr[lid].minn,tr[id].minn);
//fengge
tr[rid].maxx = max(tr[rid].maxx,tr[id].maxx);
tr[rid].maxx = min(tr[rid].maxx,tr[id].minn);
tr[rid].minn = min(tr[rid].minn,tr[id].minn);
tr[rid].minn = max(tr[rid].minn,tr[id].minn);
tr[id].maxx = 0,tr[id].minn = 1000005;
}
void build_tr(int id,int l,int r){
tr[id].l = l,tr[id].r = r,tr[id].maxx = 0,tr[id].minn = 1000005;
if(l == r){
return ;
}
int mid = (l + r)>>1;
build_tr(lid,l,mid);
build_tr(rid,mid + 1,r);
pushdown(id);
}
void upp1(int id,int l,int r,int k)
{
if(tr[id].l == l && tr[id].r == r)
{
tr[id].maxx = max(tr[id].maxx,k);
tr[id].minn = max(tr[id].minn,k);
return ;
}
pushdown(id);
int mid = (tr[id].l + tr[id].r) >> 1;//中点
if(r <= mid)
{
upp1(lid,l,r,k);
}
if(l > mid){
upp1(rid,l,r,k);
}
//upp1(lid,l,mid,k),upp1(rid,mid + 1,r,k);
}
void upp2(int id,int l,int r,int k)
{
if(tr[id].l == l && tr[id].r == r){
tr[id].maxx = min(tr[id].maxx,k);
tr[id].minn = min(tr[id].minn,k);
return ;
}
pushdown(id);
int mid = (tr[id].l + tr[id].r) >> 1;//中点
if(r <= mid){
upp2(lid,l,r,k);
}
if(l > mid){
upp2(rid,l,r,k);
}
//upp2(lid,l,mid,k),upp2(rid,mid + 1,r,k);
}
void qur(int id,int l,int r){
if(tr[id].l == tr[id].r){
if(tr[id].l <= n){
cout << tr[id].maxx << endl;
return ;
}
}
int mid = (l + r) >> 1;
pushdown(id);
qur(lid,l,mid),qur(rid,mid + 1,r);
}
signed main()
{
cin >> n >> m;
build_tr(1,1,n);
for(int i = 1;i <= m;++i){
int t,L,R,H;
cin >> t >> L >> R >> H;
if(t == 1){
upp1(1,L,R,H);
}
if(t==2){
upp2(1,L,R,H);
}
}
qur(1,1,n);
return 0;
}