Algorithm


Problem Name: beecrowd | 3068

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

Meteoros

 

Por BR Brazil

Timelimit: 1

Em noites sem nuvens pode-se muitas vezes observar pontos brilhantes no céu que se deslocam com grande velocidade, e em poucos segundos desaparecem de vista: são as chamadas estrelas cadentes, ou meteoros. Meteoros são na verdade partículas de poeira de pequenas dimensões que, ao penetrar na atmosfera terrestre, queimam-se rapidamente (normalmente a uma altura entre 60 e 120 quilômetros). Se os meteoros são suficientemente grandes, podem não queimar-se completamente na atmosfera e dessa forma atingem a superfície terrestre: nesse caso são chamados de meteoritos.

Zé Felício é um fazendeiro que adora astronomia e descobriu um portal na Internet que fornece uma lista das posições onde caíram meteoritos. Com base nessa lista, e conhecendo a localização de sua fazenda, Zé Felício deseja saber quantos meteoritos caíram dentro de sua propriedade. Ele precisa de sua ajuda para escrever um programa de computador que faça essa verificação automaticamente.

São dados:

• uma lista de pontos no plano cartesiano, onde cada ponto corresponde à posição onde caiu um meteorito;

• as coordenadas de um retângulo que delimita uma fazenda. As linhas que delimitam a fazenda são paralelas aos eixos cartesianos. Sua tarefa é escrever um programa que determine quantos meteoritos caíram dentro da fazenda (incluindo meteoritos que caíram exatamente sobre as linhas que delimitam a fazenda).

 

Entrada

 

Seu programa deve ler vários conjuntos de testes. A primeira linha de um conjunto de testes quatro números inteiros X1 , Y1 , X2 e Y2, em que (0 ≤ Y2 < Y1 ≤ 10.000) e (0 ≤ X1 < X2 ≤ 10.000), onde (X1 , Y1 ) é a coordenada do canto superior esquerdo e (X2 , Y2 ) é a coordenada do canto inferior direito do retângulo que delimita a fazenda. A segunda linha contém um inteiro, (0 ≤ N ≤ 10.000), que indica o número de meteoritos. Seguem-se N linhas, cada uma contendo dois números inteiros X (0 ≤ X ≤ 10.000) e Y (0 ≤ Y ≤ 10.000), correspondendo às coordenadas de cada meteorito. O final da entrada é indicado por X1 = Y1 = X2Y2 = 0.

 

Saída

 

Para cada conjunto de teste da entrada seu programa deve produzir duas linhas na saída. A primeira linha deve conter um identificador do conjunto de teste, no formato “Teste n”, onde n é numerado a partir de 1. A segunda linha deve conter o número de meteoritos que caíram dentro da fazenda.

 

 

 

Exemplo de Entrada Exemplo de Saída

2 4 5 1

2

1 2

3 3

2 4 3 2

3

1 1

2 2

3 3

0 0 0 0

Teste 1

1

Teste 2

2

 

Code Examples

#1 Code Example with C Programming

Code - C Programming


#include <stdio.h>
#include <stdbool.h>

int main(){
    int n, x1, y1, x2, y2, m1, m2, testes = 1, meteoritos;

    while(true){
        scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
        //Caso todos sejam zero
        if(!x1 && !x2 && !y1 && !y2)
            break;

        //Zera a quantidade de meteoritos que atingiram a fazenda.
        meteoritos = 0;
        printf("Teste\n%d\n", testes);
        scanf("%d", &n);
        while(n > 0){
            scanf("%d %d", &m1, &m2); //(m1, m2) - Coordenada do meteorito
            //Caso esteja dentro dos limites da fazenda.
            if(m1 >= x1 && m1 <= x2>{
                if(m2  < = y1 && m2 >= y2)
                    meteoritos++;
            }
            n--;
        }
        printf("%d\n", meteoritos);

        testes++;
    }
    return 0;
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
2 4 5 1 2 1 2 3 3 2 4 3 2 3 1 1 2 2 3 3 0 0 0 0

Output

x
+
cmd
Teste 1 1 Teste 2 2

#2 Code Example with C++ Programming

Code - C++ Programming


#include <iostream>

using namespace std; 

int main(){
    int n, x1, y1, x2, y2, m1, m2, testes = 1, meteoritos;

    while(true){
        cin >> x1 >> y1 >> x2 >> y2;
        //Caso todos sejam zero
        if(!x1 && !x2 && !y1 && !y2)
            break;

        //Zera a quantidade de meteoritos que atingiram a fazenda.
        meteoritos = 0;
        cout << "Teste" << endl;
        cout << testes << endl;
        cin >> n;
        while(n > 0){
            cin >> m1 >> m2; //(m1, m2) - Coordenada do meteorito
            //Caso esteja dentro dos limites da fazenda.
            if(m1 >= x1 && m1 <= x2>{
                if(m2  < = y1 && m2 >= y2)
                    meteoritos++;
            }
            n--;
        }
        cout << meteoritos << endl;

        testes++;
    }
    return 0;
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
2 4 5 1 2 1 2 3 3 2 4 3 2 3 1 1 2 2 3 3 0 0 0 0

Output

x
+
cmd
Teste 1 1 Teste 2 2
Advertisements

Demonstration


Previous
#3065 Beecrowd Online Judge Solution 3065 Calculando Solution in C, C++, Java, Js and Python
Next
#3076 Beecrowd Online Judge Solution 3076 History Exercise Solution in C, C++, Java, Js and Python