-
Notifications
You must be signed in to change notification settings - Fork 13
/
session2.cpp
160 lines (136 loc) · 4.26 KB
/
session2.cpp
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include <vector>
#include <iostream>
#include <stdio.h>
using namespace std;
/* Maratona 18\06\16
Guitar Queer-O
Autor: Matheus Pimenta
Apos comprarem o novo Guitar Hero III: Legends of Rock, Stan e Kyle tem
treinado incessantemente para se tornarem astros do rock.
Acontece que a copia do jogo dos garotos veio cheia de bugs! Agora eles
precisam da sua ajuda para continuarem o treinamento!
Dada a sequencia de combinacoes de teclas da musica e as duas sequencias de
teclas pressionados por Stan e Kyle, determine a pontuacao total dos garotos.
Cada combinacao tem no maximo 5 teclas e pode dar no minimo -5 e no maximo 5
pontos para cada garoto. Dadas duas combinacoes de teclas, a combinacao
correta e a combinacao pressionada, cada tecla fixa que aparece
simultaneamente em ambas as combinacoes acrescenta um ponto para o garoto que
a pressionou. Alem disso, para cada tecla que foi pressionada quando nao
deveria, ou que nao foi pressionada quando deveria, um ponto e subtraido.
Entrada
A primeira linha da entrada contem um unico inteiro N, o numero de combinacoes
de teclas da musica.
As proximas N linhas representam as combinacoes de teclas que devem ser
pressionadas para tocar a musica corretamente.
As proximas N linhas representam as combinacoes pressionadas por Stan.
As proximas N linhas representam as combinacoes pressionadas por Kyle.
Uma combinacao de teclas e uma string no formato G-R-Y-B-O. Variacoes deste
formato onde algumas letras sao substituidas por - (hifen) tambem sao
combinacoes validas. Cada letra representa uma tecla.
Saida
Imprima uma linha com a pontuacao total dos garotos.
Caso a pontuacao total seja a maior possivel, imprima outra linha com a
mensagem CONGRATULATIONS, YOU ARE FAGS!.
Caso a pontuacao total seja a menor possivel, imprima outra linha com a
mensagem GAME OVER, YOU SUCK!.
Restricoes
1 ≤ N ≤ 10^5
Exemplos
Entrada
1
--R-Y-B--
--R-Y---O
--R-Y-B-O
Saida
2
Entrada
1
--R-Y-B--
--R-Y-B--
--R-Y-B-O
Saida
5
Entrada
1
--R-Y-B--
--R-Y-B--
--R-Y-B--
Saida
6
CONGRATULATIONS, YOU ARE FAGS!
Entrada
1
--R-Y-B--
G-------O
G-------O
Saida
-10
GAME OVER, YOU SUCK!
A) Sobre a entrada
1. A entrada de seu programa deve ser lida da entrada padrao.
2. Quando uma linha da entrada contem varios valores, estes sao separados por
um unico espaco em branco; a entrada nao contem nenhum outro espaco em branco.
3. Cada linha, incluindo a ultima, contem o caractere final-de-linha.
4. O final da entrada coincide com o final do arquivo.
B) Sobre a saida
1. A saida de seu programa deve ser escrita na saida padrao.
2. Quando uma linha da saida contem varios valores, estes devem ser separados
por um unico espaco em branco; a saida nao deve conter nenhum outro espaco
em branco.
3. Cada linha, incluindo a ultima, deve conter o caractere final-de-linha.
*/
int main(int argc, char const *argv[]) {
int N, score;
bool noErrors = true;
std::string line;
vector<string> gameOutput;
vector<string> kyleInput;
vector<string> stanInput;
// LEITURA DAS VARIÁVEIS
getline(cin, line);
sscanf(line.c_str(), "%d", &N);
for (int l = 0; l < N; l++)
getline(cin, line),
gameOutput.push_back(line);
for (int l = 0; l < N; l++)
getline(cin, line),
kyleInput.push_back(line);
for (int l = 0; l < N; l++)
getline(cin, line),
stanInput.push_back(line);
// LÓGICA DO PROGRAMA
score = 0;
for (int n = 0; n < N; n++)
{
string inlet = gameOutput.at(n);
string kyle = kyleInput.at(n);
string stan = stanInput.at(n);
for (int i = 0; i < 9; i += 2)
{
if (inlet[i] == kyle[i]) { // checar se é igual
if(inlet[i]!='-') { // checar se pode pontuar
score++;
}
}
else {
score--;
noErrors = false;
}
if (inlet[i] == stan[i]) {
if(inlet[i]!='-') {
score++;
}
}
else {
score--;
noErrors = false;
}
}
}
std::cout << score << std::endl;
if (score == -10*N)
cout << "GAME OVER, YOU SUCK!" << endl;
if (noErrors)
cout << "CONGRATULATIONS, YOU ARE FAGS!" << endl;
return 0;
}