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

Commit f0b0ded

Browse files
authored
template for meetings
1 parent f6cb014 commit f0b0ded

File tree

1 file changed

+25
-169
lines changed

1 file changed

+25
-169
lines changed

meetings.java

Lines changed: 25 additions & 169 deletions
Original file line numberDiff line numberDiff line change
@@ -1,182 +1,38 @@
11
import java.io.*;
22
import java.util.*;
33
public 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

Comments
 (0)