Submission #1243354

#TimeUsernameProblemLanguageResultExecution timeMemory
1243354kla3000Wall (IOI14_wall)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int>> st; vector<int> a; int INF=1000000000;
void build(int ni, int l, int r)
{
    st[ni].first=0; st[ni].second=INF;
    if(l==r){return;}
    int nin=ni *2, m=(l+r)/2;
    build(nin, l, m); build(nin+1, m+1, r);
}
void query(int ni, int l, int r)
{
    if(l==r){a[l]=st[ni].first; return;}
    int nin=ni *2, m=(l+r)/2;
    st[nin].first=max(st[nin].first, st[ni].first);
    st[nin].second=min(st[nin].second, st[ni].second);
    if(st[nin].first>st[nin].second){st[nin].second = st[nin].first;}

    st[nin+1].first=max(st[nin+1].first, st[ni].first);
    st[nin+1].second=min(st[nin+1].second, st[ni].second);
    if(st[nin+1].first>st[nin+1].second){st[nin+1].second = st[nin+1].first;} 
    st[ni].first=0; st[ni].second=INF;
    query(nin, l, m); query(nin+1, m+1, r);
}
void update(int ni, int l, int r, int x, int y, int u)
{
    int nin=ni*2;
    if(y<l||r<x) return;
    if(x<=l&&r<=y)
    {
        st[ni].first=max(st[ni].first, u);
        if(st[ni].first>st[ni].second){st[ni].second=st[ni].first;}
        return;
    }
    if(l==r) return;
    st[nin].first=max(st[nin].first, st[ni].first);
    st[nin].second=min(st[nin].second, st[ni].second);
    if(st[nin].first>st[nin].second){st[nin].second = st[nin].first;}

    st[nin+1].first=max(st[nin+1].first, st[ni].first);
    st[nin+1].second=min(st[nin+1].second, st[ni].second);
    if(st[nin+1].first>st[nin+1].second){st[nin+1].second = st[nin+1].first;} 
    st[ni].first=0; st[ni].second=INF;    
    int m=(l+r)/2;
    update(nin, l, m, x, y, u); update(nin+1, m+1, r, x, y, u);
}
void updatep(int ni, int l, int r, int x, int y, int u)
{
    int nin=ni*2;
    if(y<l||r<x) return;
    if(x<=l&&r<=y)
    {
        st[ni].second=min(st[ni].second, u); 
        if(st[ni].first>st[ni].second){st[ni].first=st[ni].second;}
        return;
    }
    st[nin].first=max(st[nin].first, st[ni].first);
    st[nin].second=min(st[nin].second, st[ni].second);
    if(st[nin].first>st[nin].second){st[nin].second = st[nin].first;}

    st[nin+1].first=max(st[nin+1].first, st[ni].first);
    st[nin+1].second=min(st[nin+1].second, st[ni].second);
    if(st[nin+1].first>st[nin+1].second){st[nin+1].second = st[nin+1].first;}  
    st[ni].first=0; st[ni].second=INF;
    int m=(l+r)/2;
    updatep(nin, l, m, x, y, u); updatep(nin+1, m+1, r, x, y, u);
}
int main() {
	int n, k; cin>>n>>k; st.assign(4*n+10, {0, INF}); a.assign(n+10, 0);
    build(1, 1, n);
    while(k--)
    {
        int c, x, y, h; cin>>c>>x>>y>>h; x++; y++; if(c==2) updatep(1, 1, n, x, y, h); 
        else update(1, 1, n, x, y, h);
    }
    query(1, 1, n);
    for(int i=1; i<=n; i++){cout<<a[i]<<endl;}
}

Compilation message (stderr)

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