Algorithm


Problem Name: 2 AD-HOC - beecrowd | 2570

Problem Link: https://www.beecrowd.com.br/judge/en/problems/view/2570

Californication

 

Por Dâmi Henrique, INATEL BR Brasil

Timelimit: 1

Red, Hot, Chilli e Peppers são quatro estudantes que sempre se reunem embaixo da ponte após o término das aulas para jogar um jogo chamado Californication. Eles desenham um grid NxM no chão, inicialmente vazio, e o objetivo final é dominar a maior parte possível desse grid.

Os estudantes jogam alternadamente, sempre seguindo a mesma ordem: Red, Hot, Chili e Peppers. Após Peppers, a vez volta para Red e assim continuam jogando até completarem K rodadas. Em cada uma das rodadas, o jogador pode escolher entre duas possíveis jogadas:

L X --> {} Significa dominar a linha X do grid, escrevendo a inicial de seu nome em todos os elementos contidos nessa linha.

C Y -->{} Significa dominar a coluna Y do grid, escrevendo a inicial de seu nome em todos os elementos contidos nessa coluna.

 

Entrada

 

A primeira linha da entrada contém três inteiros N, M (1 ≤ N, M ≤ 103) e K (1 ≤ K ≤ 5 × 105), sendo as dimensões do grid (quantidade de linhas e colunas, respectivamente) e quantas rodadas foram jogadas.

 

Após isso, seguem K linhas, cada uma delas contendo uma jogada do tipo L X (1 ≤ XN) ou C Y (1 ≤ YM), ambas descritas acima.

 

Saída

 

Exiba o quão dominante cada jogador foi ao final da partida no seguinte formato: 
Ra Hb Cc Pd, onde abc e d são inteiros, representando a pontuação final de Red, Hot, Chili e Peppers, respectivamente.

 

 

 

Exemplo de Entrada Exemplo de Saída

3 3 5
L 2
L 3 
C 1
L 3
C 3 

R4 H0 C2 P2

 

Code Examples

#1 Code Example with C++ Programming

Code - C++ Programming


#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e3 + 10;
int cor_coluna[MAXN], cor_linha[MAXN], ultima_linha[MAXN], ultima_coluna[MAXN],
    atual, n, m, q, qtd[4];
int main() {
    scanf("%d %d %d", &n, &m, &q);
    for (int i = 1; i  < = n; i++) {
        cor_linha[i] = -1;
        ultima_linha[i] = -1;
    }
    for (int i = 1; i  < = m; i++) {
        cor_coluna[i] = -1;
        ultima_coluna[i] = -1;
    }
    for (int i = 1; i  < = q; i++) {
        char op;
        int pos;
        scanf(" %c %d", &op, &pos);
        if (op == 'L') {
            ultima_linha[pos] = i;
            cor_linha[pos] = atual;
        } else {
            ultima_coluna[pos] = i;
            cor_coluna[pos] = atual;
        }
        atual = (atual + 1) % 4;
    }
    for (int i = 1; i  < = n; i++) {
        int thelast = ultima_linha[i];
        int tot = m;
        int vaipara = cor_linha[i];
        for (int j = 1; j  < = m; j++) {
            if (ultima_coluna[j] > thelast && cor_coluna[j] != vaipara) {
                tot--;
                if (cor_coluna[j] != -1) {
                    qtd[cor_coluna[j]]++;
                }
            }
        }
        if (vaipara != -1) qtd[vaipara] += tot;
    }
    printf("R%d H%d C%d P%d\n", qtd[0], qtd[1], qtd[2], qtd[3]);
    return 0;
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
3 3 5
L 2
L 3
C 1
L 3
C 3

Output

x
+
cmd
R4 H0 C2 P2
Advertisements

Demonstration


Previous
#2569 Beecrowd Online Judge Solution 2569 The 7 x 1 Witch Solution in C, C++, Java, Js and Python
Next
#2576 Beecrowd Online Judge Solution 2576 Reversing Arrows Solution in C, C++, Java, Js and Python