Solução por Rogério Júnior
Sempre que temos dois pares de varetas iguais, podemos formar um retângulo, usando varetas iguais para formarmos os lados opostos. Assim, basta que saibamos a quantidade de pares de lados iguais e a quantidade de retângulos será , pois para cada dois pares poderemos fazer um novo retângulo.
Vamos criar uma variável inteira , que começará 0, que será o número de pares de varetas iguais que podemos formar. Para cada tipo de vareta teremos a quantidade de varetas desse comprimento. Com varetas, podemos formar pares de varetas, logo, adicionaremos isso à variável .
Depois que lermos todas as varetas, imprimiremos a resposta, que, como dito anteriormente, será. Vamos ao código:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <cstdio> | |
int main(){ | |
int n; | |
while(true){ // varias entradas | |
scanf("%d", &n); // leia o valor de n | |
if(n==0) break; // se n=0, acabou a entrada | |
int pares=0; // declare pares=0 | |
for(int i=1; i<=n; i++){ // para cada tipo de vareta | |
int c, v; | |
scanf("%d %d", &c, &v); // leia a quantidade de varetas desse comprimento | |
pares+=(v/2); // e adicione a pares a quantidade de pares desse comprimento de vareta que você pode formar | |
} | |
printf("%d\n", pares/2); // imprima a resposta | |
} | |
return 0; | |
} |
Abaixo, o código, em Java, do leitor Roger Benet.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.*; | |
public class solucao{ | |
public static void main(String[] args)throws IOException{ | |
BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); | |
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out)); | |
int i,qtd,n,c,x; | |
String[] aux; | |
while(true){ | |
n = Integer.parseInt(in.readLine()); | |
if(n == 0)break; | |
qtd = 0; | |
for(i = 0; i < n; i++){ | |
aux = in.readLine().split(" "); | |
c = Integer.parseInt(aux[0]); | |
x = Integer.parseInt(aux[1]); | |
c = (int) Math.floor(x/2); | |
qtd += c; | |
} | |
qtd /= 2; | |
out.write(qtd+"\n"); | |
} | |
out.flush(); | |
} | |
} |