11import java .io .*;
22import java .util .*;
33public class meetings {
4- public static void main (String [] args ) throws IOException {
5- BufferedReader f = new BufferedReader (new FileReader ("meetings.in" ));
6- PrintWriter pw = new PrintWriter (new BufferedWriter (new FileWriter ("meetings.out" )));
7- int stoppedWeight = 0 ;
4+
5+ public static void main (String [] args ) throws IOException {
6+ // TODO Auto-generated method stub
7+ BufferedReader f = new BufferedReader (new FileReader ("meetings.in" ));
8+ PrintWriter pw = new PrintWriter (new BufferedWriter (new FileWriter ("meetings.in" )));
9+ int N , L ;
810 StringTokenizer st = new StringTokenizer (f .readLine ());
9- int N = Integer .parseInt (st .nextToken ());
10- int L = Integer .parseInt (st .nextToken ());
11- //List<Event> eventSeq = new ArrayList<>();
12- List <Cow > cows = new ArrayList <>();
13- double halfSumWeight = 0 ;
14- int preP =0 ;
15- for (int i =0 ; i < N ; i ++) {
16- st = new StringTokenizer (f .readLine ());
17- int w ,v ,p ,d ;
18- w = Integer .parseInt (st .nextToken ());
19- p = Integer .parseInt (st .nextToken ())*2 ;
20- v = Integer .parseInt (st .nextToken ());
21- d = 0 ;
22- //System.out.println(v);
23- cows .add (new Cow (w ,p ,v , d ));
24- halfSumWeight += w ;
25- }
26- halfSumWeight = halfSumWeight /2 ;
27- L = 2 *L ;
28-
29- cows .sort (null );
30- preP = cows .get (0 ).P ;
31- int minDis ;
32- minDis = L + 1 ;
33- for (int i =1 ; i < cows .size (); i ++) {
34- int d = cows .get (i ).P - preP ;
35- cows .get (i ).D = d ;
36- if (cows .get (i -1 ).V == 1 && cows .get (i ).V ==-1 )
37- {
38- if (d <minDis )
39- {
40- minDis = d ;
41- }
42- }
43- preP = cows .get (i ).P ;
44-
45- }
46-
47-
48- if (cows .get (0 ).V == -1 )
49- {
50- int d = cows .get (0 ).P ;
51- if (d <minDis )
52- {
53- minDis = 2 *d ;
54- }
55-
11+ N = Integer .parseInt (st .nextToken ());
12+ L = Integer .parseInt (st .nextToken ());
13+ List <Cow > c = new ArrayList <>();
14+ for (int i = 0 ; i < N ; i ++) {
15+ int w = Integer .parseInt (st .nextToken ());
16+ int x = Integer .parseInt (st .nextToken ());
17+ int d = Integer .parseInt (st .nextToken ());
18+ c .add (new Cow (x ,d ,w ));
5619 }
57-
58- if (cows .get (cows .size ()-1 ).V == 1 )
59- {
60- int d = cows .get (cows .size ()-1 ).P ;
61- if (d <minDis )
62- {
63- minDis = 2 *d ;
64- }
65-
66- }
67- //System.out.println(cows);
68- //int curTime = 0;
69- int meet = 0 ;
70- int elapsetime = minDis /2 ;
71-
72-
20+ // Simulate
7321 while (true ) {
74- //Event nextEvent = null;
75-
76- cows .get (0 ).P = cows .get (0 ).P + cows .get (0 ).V *elapsetime ;
77- int i = 1 ;
78- for (i = 1 ; i < cows .size (); i ++) {
79- int tmpI = cows .get (i ).P + cows .get (i ).V *elapsetime ;
80- if (cows .get (i -1 ).P == tmpI )
81- {
82- cows .get (i ).V = -cows .get (i ).V ;
83- cows .get (i -1 ).V = -cows .get (i -1 ).V ;
84- meet ++;
85- }
86- cows .get (i ).P = tmpI ;
87- }
88- int nCow = i -1 ;
89- if (cows .get (0 ).P == 0 ) {
90- stoppedWeight += cows .get (0 ).W ;
91- cows .remove (0 );
92- nCow --;
93- }
94- if (cows .get (nCow ).P == L ) {
95- stoppedWeight += cows .get (nCow ).W ;
96- cows .remove (nCow );
97- }
98-
99- if (stoppedWeight >= halfSumWeight ) {
100- break ;
101- }
102-
103- preP = cows .get (0 ).P ;
104- minDis = L + 1 ;
105- for (i =1 ; i < cows .size (); i ++) {
106- int d = cows .get (i ).P - preP ;
107- cows .get (i ).D = d ;
108- if (cows .get (i -1 ).V == 1 && cows .get (i ).V ==-1 )
109- {
110- if (d <minDis )
111- {
112- minDis = d ;
113- }
114- }
115- preP = cows .get (i ).P ;
116-
117- }
118-
119-
120- if (cows .get (0 ).V == -1 )
121- {
122- int d = cows .get (0 ).P ;
123- if (d <minDis )
124- {
125- minDis = 2 *d ;
126- }
127-
128- }
129-
130- if (cows .get (cows .size ()-1 ).V == 1 )
131- {
132- int d = cows .get (cows .size ()-1 ).P ;
133- if (d <minDis )
134- {
135- minDis = 2 *d ;
136- }
137-
138- }
139- elapsetime = minDis /2 ;
140-
22+ break ; // Temporary to prevent infinite loop
14123 }
142- pw .println (meet );
143- f .close ();
14424 pw .close ();
25+ f .close ();
14526 }
14627
14728}
148- class Cow implements Comparable <Cow >{
149- public int W ,P ,V , D ;
150- public Cow (int W ,int P , int V , int D ) {
151- this .W = W ;
152- this .P = P ;
153- this .V = V ;
154- this .D = D ;
155- }
156- @ Override
157- public int compareTo (Cow o ) {
158- return Integer .compare (this .P , o .P );
159- }
160- @ Override
161- public String toString () {
162- return "#" +P +" moving at " +V +" with weight" +W ;
163- }
164-
165- }
166- class Event implements Comparable <Event >{
167- @ Override
168- public String toString () {
169- return "@" +time +" " +cow1 +" collides with " +cow2 +" at pos " +pos ;
170- }
171- public int time ,pos ,cow1 ,cow2 ;
172- public Event (int time , int pos , int cow1 , int cow2 ) {
173- this .time = time ;
29+ class Cow {
30+ int pos ;
31+ int velocity ;
32+ int weight ;
33+ public Cow (int pos , int v , int w ) {
34+ this .weight = w ;
35+ this .velocity = v ;
17436 this .pos = pos ;
175- this .cow1 = cow1 ;this .cow2 = cow2 ;
17637 }
177- @ Override
178- public int compareTo (Event o ) {
179- // TODO Auto-generated method stub
180- return Integer .compare (this .time , o .time );
181- }
182- }
38+ }
0 commit comments