# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
73200 | 2018-08-28T04:09:36 Z | test | 오르막길 (FXCUP3_hill) | C++14 | 4 ms | 432 KB |
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; const int MN = 300010; ll cross(pii a, pii b) { return 1LL * a.first * b.second - 1LL * a.second * b.first; } ll ccw(pii a, pii b, pii c) { pii p = pii(b.first - a.first, b.second - a.second); pii q = pii(c.first - a.first, c.second - a.second); return cross(p, q); } int gcd(int a, int b) { return b? gcd(b, a % b) : a; } int N; ll C; pii P[MN]; struct frac { int a, b; pii p; bool operator <(const frac &i) const { return 1LL * b * i.a < 1LL * a * i.b || (1LL * b * i.a == 1LL * a * i.b && p < i.p); } }; priority_queue<frac> pq; set<pii> pp; int main() { scanf("%d %lld", &N, &C); C *= 2; for(int i = 0; i < N; i++) { scanf("%d", &P[i].first); } for(int i = 0; i < N; i++) { scanf("%d", &P[i].second); } for(int i = 0; i < N - 1; i++) { pq.push({ P[i + 1].first - P[i].first, P[i + 1].second - P[i].second, P[i] }); } for(int i = 0; i < N; i++) { pp.insert(P[i]); } while(1) { frac t = pq.top(); pii cur = t.p; pp.erase(cur); set<pii>::iterator it = pp.lower_bound(cur); if(it == pp.begin()) break; pii nxt = *it; pii pre = *(--it); ll need = abs(ccw(pre, cur, nxt)); if(need > C) break; C -= need; pq.pop(); pq.push({ nxt.first - pre.first, nxt.second - pre.second, pre }); } frac t = pq.top(); int A = t.a; int B = t.b; int G = gcd(A, B); A /= G; B /= G; printf("%d/%d", B, A); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 248 KB | Output is correct |
2 | Correct | 3 ms | 356 KB | Output is correct |
3 | Correct | 3 ms | 432 KB | Output is correct |
4 | Incorrect | 4 ms | 432 KB | Output isn't correct |
5 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 248 KB | Output is correct |
2 | Correct | 3 ms | 356 KB | Output is correct |
3 | Correct | 3 ms | 432 KB | Output is correct |
4 | Incorrect | 4 ms | 432 KB | Output isn't correct |
5 | Halted | 0 ms | 0 KB | - |