Submission #154580

#TimeUsernameProblemLanguageResultExecution timeMemory
154580AQTSunčanje (COCI18_suncanje)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; struct Node{ int l, r; set<int> f, p, can; //full, part, candidate }; int N, M; bool ans[100005]; vector<int> cmp; pair<int, int> arr[100005]; Node seg[1000000]; int xo[100005], xn[100005], yo[100005], yn[100005]; int getidx(int n){ return lower_bound(cmp.begin(), cmp.end(), n) - cmp.begin() + 1; } void build(int l, int r, int idx){ seg[idx].l = l, seg[idx].r = r; if(l == r){ return; } int mid = l+r>>1; build(l, mid, 2*idx); build(mid+1, r, 2*idx+1); } void add(int l, int r, int v, int idx){ //cout << l << " " << r << " " << v << endl; seg[idx].p.insert(v); seg[idx].can.insert(v); if(seg[idx].f.size() && *(--seg[idx].f.end()) > v){ ans[v] = 1; } if(seg[idx].l == l && seg[idx].r == r){ seg[idx].f.insert(v); //cout << *seg[idx].can.begin() << endl; while(*seg[idx].can.begin() < v){ int n = *seg[idx].can.begin(); seg[idx].can.erase(n); ans[n] = 1; } if(*(--seg[idx].p.end()) > v){ ans[v] = 1; } return; } int mid = seg[idx].l + seg[idx].r >> 1; if(r <= mid){ add(l, r, v, 2*idx); } else if(l > mid){ add(l, r, v, 2*idx+1); } else{ add(l, mid, v, 2*idx); add(mid+1, r, v, 2*idx+1); } } void rem(int l, int r, int v, int idx){ seg[idx].p.erase(v); if(seg[idx].can.count(v)){ seg[idx].can.erase(v); } if(seg[idx].l == l && seg[idx].r == r){ seg[idx].f.erase(v); return; } int mid = seg[idx].l + seg[idx].r >> 1; if(r <= mid){ rem(l, r, v, 2*idx); } else if(l > mid){ rem(l, r, v, 2*idx+1); } else{ rem(l, mid, v, 2*idx); rem(mid+1, r, v, 2*idx+1); } } int main(){ cin.sync_with_stdio(0); cin.tie(0); cin >> N; for(int i = 1; i<=N; i++){ cin >> x1[i] >> y11[i] >> x2[i] >> y2[i]; x2[i] += x1[i]; y2[i] += y11[i]; y2[i]--; cmp.push_back(y11[i]); cmp.push_back(y2[i]); } sort(cmp.begin(), cmp.end()); cmp.erase(unique(cmp.begin(), cmp.end()), cmp.end()); M = cmp.size(); build(1, M, 1); for(int i = 1; i<=N; i++){ y11[i] = getidx(y11[i]), y2[i] = getidx(y2[i]); arr[i].first = x1[i]; arr[i+N].first = x2[i]; arr[i].second = i; arr[i+N].second = -i; } sort(arr+1, arr+1+2*N); for(int n = 1; n<=2*N; n++){ //cout << arr[n].second << endl; if(arr[n].second > 0){ add(y11[arr[n].second], y2[arr[n].second], arr[n].second, 1); } else{ rem(y11[-arr[n].second], y2[-arr[n].second], -arr[n].second, 1); } } for(int i = 1; i<=N; i++){ if(ans[i]){ cout << "NE\n"; } else{ cout << "DA\n"; } } }

Compilation message (stderr)

suncanje.cpp:15:50: error: 'int yn [100005]' redeclared as different kind of symbol
 int xo[100005], xn[100005], yo[100005], yn[100005];
                                                  ^
In file included from /usr/include/features.h:367:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/os_defines.h:39,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/c++config.h:533,
                 from /usr/include/c++/7/cassert:43,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:33,
                 from suncanje.cpp:1:
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:252:1: note: previous declaration 'double yn(int, double)'
 __MATHCALL (yn,, (int, _Mdouble_));
 ^
suncanje.cpp: In function 'void build(int, int, int)':
suncanje.cpp:26:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
     int mid = l+r>>1;
               ~^~
suncanje.cpp: In function 'void add(int, int, int, int)':
suncanje.cpp:51:26: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
     int mid = seg[idx].l + seg[idx].r >> 1;
               ~~~~~~~~~~~^~~~~~~~~~~~
suncanje.cpp: In function 'void rem(int, int, int, int)':
suncanje.cpp:73:26: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
     int mid = seg[idx].l + seg[idx].r >> 1;
               ~~~~~~~~~~~^~~~~~~~~~~~
suncanje.cpp: In function 'int main()':
suncanje.cpp:91:16: error: 'x1' was not declared in this scope
         cin >> x1[i] >> y11[i] >> x2[i] >> y2[i];
                ^~
suncanje.cpp:91:16: note: suggested alternative: 'xn'
         cin >> x1[i] >> y11[i] >> x2[i] >> y2[i];
                ^~
                xn
suncanje.cpp:91:25: error: 'y11' was not declared in this scope
         cin >> x1[i] >> y11[i] >> x2[i] >> y2[i];
                         ^~~
suncanje.cpp:91:25: note: suggested alternative: 'y1l'
         cin >> x1[i] >> y11[i] >> x2[i] >> y2[i];
                         ^~~
                         y1l
suncanje.cpp:91:35: error: 'x2' was not declared in this scope
         cin >> x1[i] >> y11[i] >> x2[i] >> y2[i];
                                   ^~
suncanje.cpp:91:35: note: suggested alternative: 'xn'
         cin >> x1[i] >> y11[i] >> x2[i] >> y2[i];
                                   ^~
                                   xn
suncanje.cpp:91:44: error: 'y2' was not declared in this scope
         cin >> x1[i] >> y11[i] >> x2[i] >> y2[i];
                                            ^~
suncanje.cpp:91:44: note: suggested alternative: 'yo'
         cin >> x1[i] >> y11[i] >> x2[i] >> y2[i];
                                            ^~
                                            yo
suncanje.cpp:103:9: error: 'y11' was not declared in this scope
         y11[i] = getidx(y11[i]), y2[i] = getidx(y2[i]);
         ^~~
suncanje.cpp:103:9: note: suggested alternative: 'y1l'
         y11[i] = getidx(y11[i]), y2[i] = getidx(y2[i]);
         ^~~
         y1l
suncanje.cpp:103:34: error: 'y2' was not declared in this scope
         y11[i] = getidx(y11[i]), y2[i] = getidx(y2[i]);
                                  ^~
suncanje.cpp:103:34: note: suggested alternative: 'yo'
         y11[i] = getidx(y11[i]), y2[i] = getidx(y2[i]);
                                  ^~
                                  yo
suncanje.cpp:104:24: error: 'x1' was not declared in this scope
         arr[i].first = x1[i];
                        ^~
suncanje.cpp:104:24: note: suggested alternative: 'xn'
         arr[i].first = x1[i];
                        ^~
                        xn
suncanje.cpp:105:26: error: 'x2' was not declared in this scope
         arr[i+N].first = x2[i];
                          ^~
suncanje.cpp:105:26: note: suggested alternative: 'xn'
         arr[i+N].first = x2[i];
                          ^~
                          xn
suncanje.cpp:113:17: error: 'y11' was not declared in this scope
             add(y11[arr[n].second], y2[arr[n].second], arr[n].second, 1);
                 ^~~
suncanje.cpp:113:17: note: suggested alternative: 'y1l'
             add(y11[arr[n].second], y2[arr[n].second], arr[n].second, 1);
                 ^~~
                 y1l
suncanje.cpp:113:37: error: 'y2' was not declared in this scope
             add(y11[arr[n].second], y2[arr[n].second], arr[n].second, 1);
                                     ^~
suncanje.cpp:113:37: note: suggested alternative: 'yo'
             add(y11[arr[n].second], y2[arr[n].second], arr[n].second, 1);
                                     ^~
                                     yo
suncanje.cpp:116:17: error: 'y11' was not declared in this scope
             rem(y11[-arr[n].second], y2[-arr[n].second], -arr[n].second, 1);
                 ^~~
suncanje.cpp:116:17: note: suggested alternative: 'y1l'
             rem(y11[-arr[n].second], y2[-arr[n].second], -arr[n].second, 1);
                 ^~~
                 y1l
suncanje.cpp:116:38: error: 'y2' was not declared in this scope
             rem(y11[-arr[n].second], y2[-arr[n].second], -arr[n].second, 1);
                                      ^~
suncanje.cpp:116:38: note: suggested alternative: 'yo'
             rem(y11[-arr[n].second], y2[-arr[n].second], -arr[n].second, 1);
                                      ^~
                                      yo