-
Notifications
You must be signed in to change notification settings - Fork 2
/
controlwork.java
144 lines (115 loc) · 7.1 KB
/
controlwork.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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/*
Контрольная работа.
Фалалель готовится к контрольной работе.
По просьбе Фалалеля его товарищ подобрал ему n задач, для каждой из которых указал уровень сложности d_j. По мнению товарища, Фалалей в начальный момент времени способен решать задачи с уровнем сложности, не превосходящим величину f. Для краткости будем говорить, что в начальный момент времени Фалалей обладает навыком f.
Фалалей решает задачи в порядке нумерации.
Возможны следующие исходы:
* Фалалей решает задачу и уровень сложности больше текущего навыка f. В этом случае Фалалель испытывает положительные эмоции, а его навык выростает до уровня сложности задачи.
* Фалалей решает задачу и уровень сложности не больше текущего навыка f. В этом случае Фалалелю становится скучно.
* Фалалей не решает задачу. В этом случае Фалалей испытывает отрицательные эмоции. Если при этом сложность задачи не больше навыка Фалалея, то его навык уменьшается на единицу.
Ваша задача - по представленным номерам задач определить:
* минимальный и максимальный уровни сложности задачи, которую Фалалей не решил к моменту, когда он завершил работу над задачей с представленным номером;
* каких эмоций Фалалей испытал больше к моменту, когда он завершил работу над задачей с заданным номером.
ВХОДНЫЕ ДАННЫЕ
В первой строке содержатся целые числа n,m,f
(1<= n,m <= 100000, 1 <= f<=1000000) - количество задач в наборе, количество заданных номеров задач и начальный навык Фалалея соответственно.
Во второй строке содержится n целых чисел d_1, d_2, ..., d_n (1<=d_j<=1000000, j=1,2,...,n) - уровни сложности задач.
В третьей строке содержится последовательность из n символов (без пробелов) A и R. Если на i-й позиции находится символ A, то Фалалей решил соответствующую задачу. Если R, то не решил.
В четвёртой строке содержится m целых чисел p_1, p_2, ..., p_m - номера задач, для которых нужно ответить на вопрос задачи.
ВЫХОДНЫЕ ДАННЫЕ
Выведите m строк.
Каждая строка должна содержать два целых числа и обозначение эмоции, которую Фалалей испытывал наиболее часто к этому моменту.
Числа и обозначение эмоции должны быть разделены пробелами.
Первое и второе числа - это минимальный и максимальный уровень сложности задачи, которую Фалалей не решил к моменту завершения работы над задачей с номером p_i.
Если к этому моменту Фалалель решил все предыдущие задачи, выведите -1.
Обозначение эмоции - это последовательность символов ":-)", ":-(" для положительных и отрицательных эмоций, ":-|" для скуки.
Если Фалалей к моменту завершения работы над задачей с номером p_i испытал одинаковое (максимальное) количество различных эмоций, следует выводить обозначение той эмоции, которую он испытал позже.
Примеры
Входные данные
15 10 8
7 5 7 8 14 6 11 7 11 12 3 11 14 12 14
ARRAAARAAARRAAA
7 3 14 13 9 15 8 5 3 12
Выходные данные
5 11 :-(
5 7 :-(
3 11 :-)
3 11 :-)
5 11 :-)
3 11 :-|
5 11 :-|
5 7 :-)
5 7 :-(
3 11 :-(
Входные данные
3 4 5
7 3 8
AAA
3 2 1 3
Выходные данные
-1 -1 :-)
-1 -1 :-|
-1 -1 :-)
-1 -1 :-)
*/
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
Integer n = s.nextInt(), // количество задач
m = s.nextInt(), // количество номеров
f = s.nextInt(); // Навык Фалалеля
int[] d = new int[n];
for(int i=0;i<n;i++){
d[i]=s.nextInt();
}
String tasksCompleted = s.next();
int[] tasks = new int[m];
for(int i=0;i<m;i++){
tasks[i]=s.nextInt();
}
HashMap<Integer,String> uniqueNumbers = new HashMap<Integer,String>();
for(int i=0;i<m;i++){
uniqueNumbers.put(tasks[i],"");
}
Integer diff_min = -1,
diff_max = -1;
Integer pos = 0,neg = 0,bored = 0;
char emotion = ')';
for(int i=0;i<n;i++){
if(tasksCompleted.charAt(i)=='A'){
if(d[i]>f){
// Положительные эмоции
f = d[i];
pos++;
if(pos>=neg && pos>=bored)
emotion=')';
}else{
// Немного скучно
bored++;
if(bored>=pos && bored>=neg)
emotion='|';
}
}else{
// Отрицательные эмоции
neg++;
if(neg>=pos && neg>=bored)
emotion='(';
if(diff_min==-1 || d[i]<diff_min)
diff_min = d[i];
if(diff_max==-1 || d[i]>diff_max)
diff_max = d[i];
if(d[i]<=f){
f = d[i] - 1;
}
}
if(uniqueNumbers.containsKey(i+1)){
uniqueNumbers.put(i+1,diff_min+" "+diff_max+" :-"+emotion);
}
}
for(int i=0;i<tasks.length;i++){
System.out.println(uniqueNumbers.get(tasks[i]));
}
}
}