-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCowAteMyHomework.java
More file actions
103 lines (102 loc) · 2.45 KB
/
CowAteMyHomework.java
File metadata and controls
103 lines (102 loc) · 2.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import java.io.*;
import java.util.*;
public class CowAteMyHomework
{
public static void main(String[] args) throws NumberFormatException, IOException
{
//BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedReader br = new BufferedReader(new FileReader("homework.in"));
int num = Integer.parseInt(br.readLine());
double tolerance = 0.00001;
String[] temp;
temp = br.readLine().split(" ");
Question[] sortedList = new Question[num];
Question[] orderedList = new Question[num];
Question tempQ;
for (int i = 0; i < num; i++)
{
tempQ = new Question(Integer.parseInt(temp[i]));
sortedList[i] = tempQ;
orderedList[i] = tempQ;
}
Comparator<Question> c = new Comparator<Question>()
{
public int compare(Question q1, Question q2)
{
return q1.getScore()-q2.getScore();
}
};
Arrays.sort(sortedList, c);
double average = 0;
for (int i = 0; i < num; i++)
{
average += sortedList[i].getScore();
}
int lowest = sortedList[0].getScore();
average = (average-lowest)/(num-1);
double max = 0;
//System.out.println(average);
ArrayList<Integer> answers = new ArrayList<Integer>();
int pointer = 0;
orderedList[0].check();
for (int i = 0; i < orderedList.length-2; i++)
{
orderedList[i].check();
if (orderedList[i].getScore() == lowest)
{
while(++pointer < num-1 && sortedList[pointer].isChecked())
continue;
lowest = sortedList[pointer].getScore();
average = (average*(num-i-1)-lowest)/(num-i-2);
}
else
{
average = (average * (num-i-1) - orderedList[i].getScore())/(num-i-2);
}
//System.out.println(average);
if (average - max > tolerance)
{
max = average;
answers = new ArrayList<Integer>();
answers.add(i+1);
}
else if (average - max <= tolerance && average-max > 0)
{
answers.add(i+1);
}
//for (Question el: orderedList)
// System.out.println(el);
}
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("homework.out")));
for (int el: answers)
pw.println(el);
pw.close();
br.close();
}
public static class Question
{
private int score;
private boolean checked;
public Question(int score)
{
this.score = score;
checked = false;
}
public int getScore()
{
return score;
}
public boolean isChecked()
{
return checked;
}
public void check()
{
checked = true;
}
public String toString()
{
return ("Score: " + score + " Checked: " + checked);
}
}
}