-
Notifications
You must be signed in to change notification settings - Fork 102
/
Copy pathContest.java
109 lines (101 loc) · 4.83 KB
/
Contest.java
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
104
105
106
107
108
109
package contest;
import java.util.*;
import java.io.*;
public class Contest {
private static ArrayList<String> list = new ArrayList<>(); // Коллекция для построчного считывания данных
private static ArrayList<Integer> time = new ArrayList<>(); // Коллекция для хранения времени на решение задач
private static int taskCountOne = 0, taskCountThree = 0, taskCountFive = 0; // Количество решенных задач
private static int mistakeCountOne = 0, mistakeCountThree = 0, mistakeCountFive = 0; // Количество штрафного времени по каждому заданию
private static int mistakeAllOne = 0, mistakeAllThree = 0, mistakeAllFive = 0; // Количество штрафного времени по каждому заданию
private static int maxTime = 300; // Максимальная продолжительность соревнований
private static void oneKurs(){
Collections.sort(time);
int one = 0;
for (Integer aTime : time) { // Расчет по первокурснику
if (one >= 0) {
one = maxTime - aTime;
maxTime = one;
taskCountOne++;
mistakeCountOne += aTime;
mistakeAllOne += mistakeCountOne;
} else {
break;
}
}
}
private static void threeKurs(){
Collections.reverse(time);
int three = 0;
for (Integer aTime : time) { // Расчет по третьекурснику
if (three >= 0) {
three = maxTime - aTime;
maxTime = three;
taskCountThree++;
mistakeCountThree += aTime;
mistakeAllThree += mistakeCountThree;
} else {
break;
}
}
}
private static void fiveKurs(){
int five = 0;
for (Integer aTime : time) { // Расчет по пятикурснику
if (five >= 0) {
five = maxTime - aTime;
maxTime = five;
taskCountFive++;
mistakeCountFive += aTime;
mistakeAllFive += mistakeCountFive;
} else {
break;
}
}
}
private static void time(){
maxTime = 300;
}
public static void main(String[] args) throws IOException {
String str;
FileReader file = new FileReader("input.txt"); // Считывание данных из файла
Scanner sc = new Scanner(file);
while(sc.hasNextLine()){
str = sc.nextLine();
list.add(str);
}
StringTokenizer st = new StringTokenizer(list.get(1), " ");
while(st.hasMoreTokens()){
time.add(Integer.valueOf(st.nextToken()));
}
fiveKurs();
time();
threeKurs();
time();
oneKurs();
// Определение победителя
String winner = (taskCountOne > taskCountThree && taskCountOne > taskCountFive) ? "1" :
(taskCountThree > taskCountOne && taskCountThree > taskCountFive) ? "3" : "5";
if(taskCountOne == taskCountThree && taskCountOne > taskCountFive){
winner = (mistakeAllOne == mistakeAllThree) ? "1" :
(mistakeAllOne > mistakeAllThree) ? "3" : "1";
}else if(taskCountOne == taskCountFive && taskCountOne > taskCountThree){
winner = (mistakeAllOne == mistakeAllFive) ? "1" :
(mistakeAllOne > mistakeAllFive) ? "5" : "1";
}else if(taskCountThree == taskCountFive && taskCountThree > taskCountOne){
winner = (mistakeAllThree == mistakeAllFive) ? "3" :
(mistakeAllThree > mistakeAllFive) ? "5" : "3";
}else{
if(taskCountOne == taskCountThree && taskCountOne == taskCountFive) {
winner = (mistakeAllOne == mistakeAllThree && mistakeAllOne == mistakeAllFive) ? "1" :
(mistakeAllOne == mistakeAllThree && mistakeAllOne < mistakeAllFive) ? "1" :
(mistakeAllThree == mistakeCountFive && mistakeAllThree < mistakeAllOne) ? "3" :
(mistakeAllOne == mistakeAllFive && mistakeAllOne < mistakeAllThree) ? "1" :
(mistakeAllFive < mistakeAllThree && mistakeAllFive < mistakeAllOne) ? "5" :
(mistakeAllThree < mistakeAllFive && mistakeAllThree < mistakeAllOne) ? "3" : "1";
}
}
FileWriter countStepFinish = new FileWriter("output.txt");// Запись числа в файл
countStepFinish.write(winner);
countStepFinish.close();
}
}