# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1108134 | Zero_OP | 사다리꼴 (balkan11_trapezoid) | C++14 | 70 ms | 10216 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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;
cur += Node(1, 1);
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;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |