Skip to content
This repository was archived by the owner on Feb 29, 2024. It is now read-only.

Commit d0eef15

Browse files
authored
Add files via upload
1 parent 014816e commit d0eef15

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

cowjump.java

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import java.io.*;
2+
import java.util.*;
3+
public class cowjump {
4+
public static void testIntersections() {
5+
assert Point.intersection(new Point(0,0), new Point(2,9), new Point(0,1), new Point(6,1))== true;
6+
assert Point.intersection(new Point(0,0), new Point(1,1), new Point(3,3), new Point(3,12))== false;
7+
System.out.println("All Tests OK!");
8+
}
9+
public static void main(String[] args) throws IOException{
10+
// TODO Auto-generated method stub
11+
//testIntersections();
12+
BufferedReader f = new BufferedReader(new FileReader("cowjump.in"));
13+
int N = Integer.parseInt(f.readLine());
14+
Point[][] input = new Point[N][2];
15+
//System.out.println(input[0][0]);
16+
for(int i = 0; i < N; i ++) {
17+
StringTokenizer st = new StringTokenizer(f.readLine());
18+
input[i][0] = new Point(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
19+
input[i][1] = new Point(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
20+
for(int j = 0; j < i; j ++) {
21+
if(Point.intersection(input[j][0], input[j][1], input[i][0], input[i][1])) {
22+
PrintWriter pw = new PrintWriter("cowjump.out");
23+
pw.println(i+1);
24+
pw.close();
25+
System.exit(0);
26+
}
27+
}
28+
}
29+
}
30+
31+
}
32+
class Point{
33+
int x,y;
34+
public Point(int x,int y) {
35+
this.x = x;
36+
this.y = y;
37+
}
38+
public Point() {
39+
this.x = 0;
40+
this.y = 0;
41+
}
42+
static boolean intersection(Point a, Point b,Point c, Point d) {
43+
Point E = new Point(b.x - a.x, b.y - a.y);
44+
Point F = new Point(d.x - c.x, d.y - c.y);
45+
Point P = new Point(-E.y, E.x);
46+
Point Q = new Point(a.x - c.x, a.y - c.y);
47+
double k = F.x * P.x + F.y * P.y;
48+
if(k == 0) {
49+
// Parallel
50+
return false;
51+
}
52+
53+
double h = (Q.x * P.x + Q.y * P.y)/(k);
54+
if(0 <= h && h <= 1) {
55+
return true;
56+
}
57+
return false;
58+
}
59+
}

0 commit comments

Comments
 (0)