Submission #1108135

#TimeUsernameProblemLanguageResultExecution timeMemory
1108135Zero_OPtrapezoid (balkan11_trapezoid)C++14
0 / 100
70 ms8084 KiB
#include <bits/stdc++.h> using namespace std; const int mod = 30013; void add(int& x, int y){ x += y; if(x >= mod) x -= mod; } struct Node{ int mx, ways; Node(int mx = 0, int ways = 0) : mx(mx), ways(ways) {} friend Node operator + (const Node& a, const Node& b){ Node c(max(a.mx, b.mx), 0); if(a.mx == c.mx) add(c.ways, a.ways); if(b.mx == c.mx) add(c.ways, b.ways); return c; } Node& operator += (const Node& oth){ if(mx == oth.mx) add(ways, oth.ways); else if(mx < oth.mx) mx = oth.mx, ways = oth.ways; return *this; } }; struct Fenwick{ vector<Node> bit; Fenwick(int n) : bit(n + 1, Node()) {} void update(int id, Node v){ for(; id < (int)bit.size(); id += id & (-id)){ bit[id] += v; } } Node query(int id){ Node ret(0, 0); for(; id > 0; id -= id & (-id)){ ret += bit[id]; } return ret; } }; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); #ifdef LOCAL freopen("task.inp", "r", stdin); freopen("task.out", "w", stdout); #endif // LOCAL int N; cin >> N; vector<int> v; vector<tuple<int, int, int, int>> E; for(int i = 0; i < N; ++i){ int a, b, c, d; cin >> a >> b >> c >> d; v.emplace_back(c); v.emplace_back(d); E.emplace_back(a, 0, c, i); E.emplace_back(b, 1, d, i); } sort(v.begin(), v.end()); v.erase(unique(v.begin(), v.end()), v.end()); sort(E.begin(), E.end()); auto findPos = [&](int i){ return lower_bound(v.begin(), v.end(), i) - v.begin() + 1; }; for(auto& [x, type, pos, id] : E){ pos = findPos(pos); } Fenwick ft(N); Node res(0, 0); vector<Node> f(N, Node(0, 0)); for(auto [x, type, pos, id] : E){ if(type == 0){ Node cur = ft.query(pos - 1); ++cur.mx; f[id] = cur; } else{ ft.update(pos, f[id]); } } for(int i = 0; i < N; ++i){ res += f[i]; } cout << res.mx << ' ' << res.ways << '\n'; return 0; }

Compilation message (stderr)

trapezoid.cpp: In function 'int main()':
trapezoid.cpp:79:15: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   79 |     for(auto& [x, type, pos, id] : E){
      |               ^
trapezoid.cpp:86:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   86 |     for(auto [x, type, pos, id] : E){
      |              ^
#Verdict Execution timeMemoryGrader output
Fetching results...