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