Submission #822966

#TimeUsernameProblemLanguageResultExecution timeMemory
822966vjudge1Rectangles (IOI19_rect)C++17
0 / 100
1 ms468 KiB
#include<bits/stdc++.h> #include "rect.h" using namespace std; using ll = long long; // O(nlogn) vector<pair<int, int>> get_segments(vector<int> &a) { vector<pair<int, int>> res, b; int n = (int)a.size(); for(int i = 0; i < n; i++) { b.push_back({a[i], i}); } sort(b.rbegin(), b.rend()); set<int> st; for(auto [x, pos] : b) { st.insert(pos); auto it = st.lower_bound(pos); if(it != st.begin()) { auto lb = it; lb--; if(*it - *lb > 1) res.push_back({*lb + 1, *it - 1}); } if(it != (--st.end())) { auto rb = it; rb++; if(*rb - *it > 1) res.push_back({*it + 1, *rb - 1}); } } return res; } ll count_rectangles(vector<vector<int>> a) { int n = (int)a.size(), m = (int)a[0].size(); if(n == 3) { auto seg = get_segments(a[1]); int pre[m] = {}; for(int i = 0; i < m; i++) { pre[i] = (a[1][i] < min(a[0][i], a[2][i])); if(i) pre[i] += pre[i - 1]; } int res = 0; for(auto [l, r] : seg) { int g = pre[r] - (l ? pre[l - 1] : 0); if(g == r - l + 1) res++; } return res; } return 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...