제출 #1361990

#제출 시각아이디문제언어결과실행 시간메모리
1361990swstudy000Wall (IOI14_wall)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
struct mxmn{
    int mx,mn;
};
mxmn seg[8000001];
mxmn lazy[8000001];
void update_lazy(int s,int e,int idx){
    seg[idx].mx=min(seg[idx].mx,lazy[idx].mx);
    seg[idx].mn=min(seg[idx].mn,lazy[idx].mx);
    seg[idx].mn=max(seg[idx].mn,lazy[idx].mn);
    seg[idx].mx=max(seg[idx].mx,lazy[idx].mn);
    if(s!=e){
        lazy[idx*2].mx=min(lazy[idx*2].mx,lazy[idx].mx);
        lazy[idx*2].mn=min(lazy[idx*2].mn,lazy[idx].mx);
        lazy[idx*2].mn=max(lazy[idx*2].mn,lazy[idx].mn);
        lazy[idx*2].mx=max(lazy[idx*2].mx,lazy[idx].mn);
        
        
        lazy[idx*2+1].mx=min(lazy[idx*2+1].mx,lazy[idx].mx);
        lazy[idx*2+1].mn=min(lazy[idx*2+1].mn,lazy[idx].mx);
        lazy[idx*2+1].mn=max(lazy[idx*2+1].mn,lazy[idx].mn);
        lazy[idx*2+1].mx=max(lazy[idx*2+1].mx,lazy[idx].mn);
    }
    lazy[idx].mx=1e9;
    lazy[idx].mn=-1e9;
}
void update_range(int s,int e,int idx,int qs,int qe,int to,int tp){
    update_lazy(s,e,idx);
    if(s>qe||qs>e) return;
    if(qs<=s&&e<=qe){
        if(tp==1){
            lazy[idx].mn=max(lazy[idx].mn,to);
        }
        else lazy[idx].mx=min(lazy[idx].mx,to);
        update_lazy(s,e,idx);
        return;
    }
    int mid=(s+e)/2;
    update_range(s,mid,idx*2,qs,qe,to,tp);
    update_range(mid+1,e,idx*2+1,qs,qe,to,tp);
    seg[idx].mn=min(seg[idx*2].mn,seg[idx*2+1].mn);
    seg[idx].mx=max(seg[idx*2].mx,seg[idx*2+1].mx);
    
}
mxmn query(int s,int e,int idx,int qs,int qe){
    update_lazy(s,e,idx);
    if(s>qe||qs>e) return {(int)1e9,-(int)1e9};
    if(s==e){
        //cout<<s<<' '<<seg[idx].mn<<"\n";
        return seg[idx];
    }
    int mid=(s+e)/2;
    mxmn A=query(s,mid,idx*2,qs,qe);
    mxmn B=query(mid+1,e,idx*2+1,qs,qe);
    return {min(A.mx,B.mx),max(A.mn,B.mn)};
}
int main(){
    cin.tie(0)->ios::sync_with_stdio(0);
    int n,m;
    cin>>n>>m;
    for(int i=0;i<=n*4;i++) seg[i].mx=seg[i].mn=0,lazy[i].mx=1e9,lazy[i].mn=-1e9;
    for(int i=1;i<=m;i++){
        int a,b,c,d;
        cin>>a>>b>>c>>d;
        if(a==1){
            update_range(0,n-1,1,b,c,d,1);
        }
        else{
            update_range(0,n-1,1,b,c,d,0);
        }
            
        // for(int j=0;j<n;j++){
        //     cout<<query(0,n-1,1,j,j).mn<<"\n";
        // }
        // cout<<"\n";
    }
    for(int i=0;i<n;i++){
        cout<<query(0,n-1,1,i,i).mn<<"\n";
    }
}

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

/usr/bin/ld: /tmp/ccInJr65.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccEovMEI.o:wall.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccInJr65.o: in function `main':
grader.cpp:(.text.startup+0x123): undefined reference to `buildWall(int, int, int*, int*, int*, int*, int*)'
collect2: error: ld returned 1 exit status