(SPOJ) 1333 - Sorvete - Solução
import java.io.*;
import java.util.*;
class Main {
class Resultado {
int inicio;
int fim;
}
public static void main(String[] args) throws NumberFormatException, IOException {
Main processando = new Main();
processando.processa();
System.exit(0);
}
static int leitor(BufferedReader br) throws NumberFormatException, IOException {
int n;
int resp = 0;
while (true) {
n = br.read();
if (n >= '0' && n <= '9')
break;
}
while (true) {
resp = resp*10 + n-'0';
n = br.read();
if (n < '0' || n > '9')
break;
}
return resp;
}
void processa() throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int comprimentoPraia = leitor(br);
int numSorveteiros = leitor(br);
int contaCasos = 0;
while (comprimentoPraia != 0 || numSorveteiros != 0) {
int[] vetor = new int[comprimentoPraia+1];
for (int i = 0; i < numSorveteiros; i++) {
int inicio = leitor(br);
int fim = leitor(br);
for (int j = inicio; j < fim; j++) {
vetor[j] = 1;
}
}
Resultado[] resposta = new Resultado[comprimentoPraia];
for (int i = 0; i < comprimentoPraia; i++) {
resposta[i] = new Resultado();
}
int indice = 0;
int contaSorveteiro = 0;
while (indice <= comprimentoPraia) {
if (vetor[indice] == 1) {
resposta[contaSorveteiro].inicio = indice;
indice++;
while (indice <= comprimentoPraia && vetor[indice] == 1) {
indice++;
}
resposta[contaSorveteiro].fim = indice;
contaSorveteiro++;
}
indice++;
}
contaCasos++;
bw.write("Teste " + contaCasos + "\n");
for (int i = 0; i < contaSorveteiro; i++) {
bw.write(resposta[i].inicio + " " + resposta[i].fim + "\n");
}
bw.write("\n");
comprimentoPraia = leitor(br);
numSorveteiros = leitor(br);
}
bw.flush();
bw.close();
return;
}
}
import java.util.*;
class Main {
class Resultado {
int inicio;
int fim;
}
public static void main(String[] args) throws NumberFormatException, IOException {
Main processando = new Main();
processando.processa();
System.exit(0);
}
static int leitor(BufferedReader br) throws NumberFormatException, IOException {
int n;
int resp = 0;
while (true) {
n = br.read();
if (n >= '0' && n <= '9')
break;
}
while (true) {
resp = resp*10 + n-'0';
n = br.read();
if (n < '0' || n > '9')
break;
}
return resp;
}
void processa() throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int comprimentoPraia = leitor(br);
int numSorveteiros = leitor(br);
int contaCasos = 0;
while (comprimentoPraia != 0 || numSorveteiros != 0) {
int[] vetor = new int[comprimentoPraia+1];
for (int i = 0; i < numSorveteiros; i++) {
int inicio = leitor(br);
int fim = leitor(br);
for (int j = inicio; j < fim; j++) {
vetor[j] = 1;
}
}
Resultado[] resposta = new Resultado[comprimentoPraia];
for (int i = 0; i < comprimentoPraia; i++) {
resposta[i] = new Resultado();
}
int indice = 0;
int contaSorveteiro = 0;
while (indice <= comprimentoPraia) {
if (vetor[indice] == 1) {
resposta[contaSorveteiro].inicio = indice;
indice++;
while (indice <= comprimentoPraia && vetor[indice] == 1) {
indice++;
}
resposta[contaSorveteiro].fim = indice;
contaSorveteiro++;
}
indice++;
}
contaCasos++;
bw.write("Teste " + contaCasos + "\n");
for (int i = 0; i < contaSorveteiro; i++) {
bw.write(resposta[i].inicio + " " + resposta[i].fim + "\n");
}
bw.write("\n");
comprimentoPraia = leitor(br);
numSorveteiros = leitor(br);
}
bw.flush();
bw.close();
return;
}
}
Comments
Post a Comment