Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.StringTokenizer;
- class Produto {
- String nome;
- double PVP;
- double lucroPercent;
- double lucroEUR;
- double receita;
- double lucro;
- int qtVendido;
- Produto(String nome, double PVP, double lucroPercent) {
- this.nome = nome;
- this.PVP = PVP;
- this.lucroPercent = lucroPercent;
- this.lucroEUR = lucroPercent * PVP;
- }
- }
- public class ExeA {
- public static void main(String[] arguments) {
- long time, timeOrder=0;
- String input, num, nome, pvp, lucroP;
- StringTokenizer st;
- long tStart, tEnd;
- long tStart2, tEnd2;
- int numProdutos;
- do {
- timeOrder=0;
- input = readLn(200);
- st = new StringTokenizer(input.trim());
- num = st.nextToken();
- numProdutos = Integer.parseInt(num);
- Produto[] produtos = new Produto[numProdutos];
- // produtos à venda no supermercado
- for (int i=0; i<numProdutos; i++) {
- input = readLn(200);
- st = new StringTokenizer(input.trim());
- nome = st.nextToken();
- pvp = st.nextToken();
- lucroP = st.nextToken();
- Produto novoProduto = new Produto(nome, Double.parseDouble(pvp), Double.parseDouble(lucroP));
- produtos[i] = novoProduto;
- }
- input = readLn(200);
- st = new StringTokenizer(input.trim());
- num = st.nextToken();
- int numVendas = Integer.parseInt(num);
- String quantidade;
- // produtos vendidos
- for (int i=0; i<numVendas; i++) {
- input = readLn(200);
- st = new StringTokenizer(input.trim());
- nome = st.nextToken();
- quantidade = st.nextToken();
- // procura objeto produto pelo nome no arrayList dos produtos
- //tStart2 = System.nanoTime();
- Produto p = procuraProdutoNome(produtos, nome);
- //tEnd2 = System.nanoTime();
- //timeOrder += tEnd2 - tStart2;
- if (p != null) {
- p.qtVendido = Integer.parseInt(quantidade);
- p.lucro += p.lucroEUR*p.qtVendido;
- p.receita += p.PVP*p.qtVendido;
- }
- }
- tStart2 = System.nanoTime();
- //System.out.println("Lucro");
- produtos = ordenaLucro(produtos);
- //imprimeArray(produtos);
- //System.out.println("Receita");
- produtos = ordenaReceita(produtos);
- //imprimeArray(produtos);
- tEnd2 = System.nanoTime();
- timeOrder += tEnd2 - tStart2;
- //System.out.println("Tempo Ordenamento: "+timeOrder+" nanosegundos");
- //System.out.println("Tempo Total: "+time+" nanosegundos");
- double d = (double)(timeOrder/1000000);
- System.out.println(d);
- //System.out.println(time);
- } while(numProdutos!=0);
- }
- static void imprimeArray(Produto[] produtos) {
- for (Produto p: produtos)
- System.out.println(p.nome);
- }
- static Produto[] ordenaReceita(Produto[] p) {
- int n = p.length;
- Produto temp;
- for (int i = 0; i < n; i++) {
- for (int j = 1; j < (n - i); j++) {
- if (p[j - 1].receita < p[j].receita) {
- temp = p[j - 1];
- p[j - 1] = p[j];
- p[j] = temp;
- }
- }
- }
- return p;
- }
- static Produto[] ordenaLucro(Produto[] p) {
- int n = p.length;
- Produto temp;
- for (int i = 0; i < n; i++) {
- for (int j = 1; j < (n - i); j++) {
- if (p[j - 1].lucro < p[j].lucro) {
- temp = p[j - 1];
- p[j - 1] = p[j];
- p[j] = temp;
- }
- }
- }
- return p;
- }
- static Produto procuraProdutoNome(Produto[] produtos, String nome) {
- for (Produto p: produtos) {
- if (p.nome.equals(nome))
- return p;
- }
- return null;
- }
- // leitura do input
- static String readLn(int maxLg) { //utility function to read from stdin
- byte lin[] = new byte[maxLg];
- int lg = 0, car = -1;
- String line = "";
- try {
- while (lg < maxLg) {
- car = System.in.read();
- if ((car < 0) || (car == '\n')) {
- break;
- }
- lin[lg++] += car;
- }
- } catch (IOException e) {
- return (null);
- }
- if ((car < 0) && (lg == 0)) {
- return (null); // eof
- }
- return (new String(lin, 0, lg));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement