Você está na página 1de 2

Leonardo Henrique da Silva engenharia da computação 10°período

#include <bits/stdc++.h>
using namespace std;

const int MAX_N = 25;


const int MAX_X = 112;

int ultimoTempoMensagem[MAX_X], statusMensagem[MAX_X], tempoResposta[MAX_X];


char tipoEvento[MAX_N];
struct Entrada {
char tipo;
int numero;
};

int main() {
int n, tempoAtual = 0, numeroAmigo;
vector<Entrada> entradas;
scanf("%d", &n);

for (int i = 0; i < n; i++) {


scanf(" %c %d", &tipoEvento[i], &numeroAmigo);

entradas.push_back({tipoEvento[i], numeroAmigo});

for (int j = (entradas.size() - 2); j >= 0; j--) {


if (entradas[j].tipo == tipoEvento[i] && entradas[j].numero == numeroAmigo) {
printf("Espere a pessoa responder antes de enviar outra mensagem\n");
return 0;
}
}

int flagEvento = 0;

if (i >= 1 && tipoEvento[i] == tipoEvento[i - 1] && numeroAmigo ==


ultimoTempoMensagem[numeroAmigo]) {
printf("Espere a pessoa responder antes de enviar outra mensagem\n");
return 0;
}

if (i >= 1 && (tipoEvento[i] == 'R' || tipoEvento[i] == 'E') && (tipoEvento[i - 1] == 'R' ||


tipoEvento[i - 1] == 'E')) {
tempoAtual++;
if (tipoEvento[i] == 'R') {
flagEvento = 1;
}
if (tipoEvento[i] == 'E') {
flagEvento = 2;
}
}

if (tipoEvento[i] == 'T') {
tempoAtual += numeroAmigo;
}

if (tipoEvento[i] == 'R' || flagEvento == 1) {


ultimoTempoMensagem[numeroAmigo] = tempoAtual;
statusMensagem[numeroAmigo] = 1;
}

if (tipoEvento[i] == 'E' || flagEvento == 2) {


tempoResposta[numeroAmigo] += tempoAtual -
ultimoTempoMensagem[numeroAmigo];
statusMensagem[numeroAmigo] = 2;
}
}

for (int i = 0; i < MAX_X; i++) {


if (statusMensagem[i] == 1) {
printf("Amigo %d -1\n", i);
} else if (statusMensagem[i] == 2) {
printf("Amigo %d %d\n", i, tempoResposta[i]);
}
}

return 0;
}

Você também pode gostar