#include <cmath>
#include <iostream>
using namespace std;
struct point{
int x;
int y;
};
// line segment p-q intersect with line A-B.
point lineIntersectSeg(point p, point q, point A, point B) {
double a = B.y - A.y;
double b = A.x - B.x;
double c = B.x * A.y - A.x * B.y;
double u = fabs(a * p.x + b * p.y + c);
double v = fabs(a * q.x + b * q.y + c);
return point{(p.x * v + q.x * u) / (u+v), (p.y * v + q.y * u) / (u+v)};
}
int main() {
point foo = lineIntersectSeg(point{0, 1}, point{0, 2}, point{1, 1}, point{1, 2});
cout << foo.x << endl << foo.y << endl;
return 0;
}
I2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8aW9zdHJlYW0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IHBvaW50ewoJaW50IHg7CglpbnQgeTsKfTsKCi8vIGxpbmUgc2VnbWVudCBwLXEgaW50ZXJzZWN0IHdpdGggbGluZSBBLUIuCnBvaW50IGxpbmVJbnRlcnNlY3RTZWcocG9pbnQgcCwgcG9pbnQgcSwgcG9pbnQgQSwgcG9pbnQgQikgewogIGRvdWJsZSBhID0gQi55IC0gQS55OwogIGRvdWJsZSBiID0gQS54IC0gQi54OwogIGRvdWJsZSBjID0gQi54ICogQS55IC0gQS54ICogQi55OwogIGRvdWJsZSB1ID0gZmFicyhhICogcC54ICsgYiAqIHAueSArIGMpOwogIGRvdWJsZSB2ID0gZmFicyhhICogcS54ICsgYiAqIHEueSArIGMpOwogIHJldHVybiBwb2ludHsocC54ICogdiArIHEueCAqIHUpIC8gKHUrdiksIChwLnkgKiB2ICsgcS55ICogdSkgLyAodSt2KX07Cn0KCmludCBtYWluKCkgewoJcG9pbnQgZm9vID0gbGluZUludGVyc2VjdFNlZyhwb2ludHswLCAxfSwgcG9pbnR7MCwgMn0sIHBvaW50ezEsIDF9LCBwb2ludHsxLCAyfSk7Cgljb3V0IDw8IGZvby54IDw8IGVuZGwgPDwgZm9vLnkgPDwgZW5kbDsKCXJldHVybiAwOwp9