Submission #1243344

#TimeUsernameProblemLanguageResultExecution timeMemory
1243344kla3000Wall (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=max(st[nin].second, st[ni].first); if(st[nin].first>st[nin].second){st[nin] = {st[ni].first, st[ni].first};} st[nin].second=min(st[nin].second, st[ni].second); st[nin].first=min(st[nin].first, st[ni].second); if(st[nin].first>st[nin].second){st[nin] = {st[ni].second, st[ni].second};} st[nin+1].first=max(st[nin+1].first, st[ni].first); st[nin+1].second=max(st[nin+1].second, st[ni].first); if(st[nin+1].first>st[nin+1].second){st[nin+1] = {st[ni].first, st[ni].first};} st[nin+1].second=min(st[nin+1].second, st[ni].second); st[nin+1].first=min(st[nin+1].first, st[ni].second); if(st[nin+1].first>st[nin+1].second){st[nin+1] = {st[ni].second, st[ni].second};} 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); st[ni].second=max(st[ni].second, u); if(st[ni].first>st[ni].second){st[ni].first=u; st[ni].second=u;} return; } if(l==r) return; st[nin].first=max(st[nin].first, st[ni].first); st[nin].second=max(st[nin].second, st[ni].first); if(st[nin].first>st[nin].second){st[nin] = {st[ni].first, st[ni].first};} st[nin].second=min(st[nin].second, st[ni].second); st[nin].first=min(st[nin].first, st[ni].second); if(st[nin].first>st[nin].second){st[nin] = {st[ni].second, st[ni].second};} st[nin+1].first=max(st[nin+1].first, st[ni].first); st[nin+1].second=max(st[nin+1].second, st[ni].first); if(st[nin+1].first>st[nin+1].second){st[nin+1] = {st[ni].first, st[ni].first};} st[nin+1].second=min(st[nin+1].second, st[ni].second); st[nin+1].first=min(st[nin+1].first, st[ni].second); if(st[nin+1].first>st[nin+1].second){st[nin+1] = {st[ni].second, st[ni].second};} 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].first=min(st[ni].first, u); st[ni].second=min(st[ni].second, u); if(st[ni].first>st[ni].second){st[ni].first=u; st[ni].second=u;} return; } st[nin].first=max(st[nin].first, st[ni].first); st[nin].second=max(st[nin].second, st[ni].first); if(st[nin].first>st[nin].second){st[nin] = {st[ni].first, st[ni].first};} st[nin].second=min(st[nin].second, st[ni].second); st[nin].first=min(st[nin].first, st[ni].second); if(st[nin].first>st[nin].second){st[nin] = {st[ni].second, st[ni].second};} st[nin+1].first=max(st[nin+1].first, st[ni].first); st[nin+1].second=max(st[nin+1].second, st[ni].first); if(st[nin+1].first>st[nin+1].second){st[nin+1] = {st[ni].first, st[ni].first};} st[nin+1].second=min(st[nin+1].second, st[ni].second); st[nin+1].first=min(st[nin+1].first, st[ni].second); if(st[nin+1].first>st[nin+1].second){st[nin+1] = {st[ni].second, st[ni].second};} 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, 0}); a.assign(n+10, 0); build(1, 1, n); while(k--) { int c, x, y, h; cin>>c>>x>>y>>h; 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/ccKJFnyA.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccTCuMlV.o:wall.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccKJFnyA.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