Advertisement
kokusz19

Prog2Gyak

Nov 7th, 2020 (edited)
2,219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 17.10 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.util.*;
  4.  
  5. class vidampark{
  6.     public String hullamvasut;
  7.     public String vilag;
  8.     public int magassag;
  9.     public int ido;
  10.  
  11.     public vidampark(String hullamvasut, String vilag, int magassag, int ido)
  12.     {
  13.         this.hullamvasut = hullamvasut;
  14.         this.vilag = vilag;
  15.         this.magassag = magassag;
  16.         this.ido = ido;
  17.     }
  18.  
  19.     @Override
  20.     public String toString()
  21.     {
  22.         return hullamvasut + " (" + vilag + "): " + ido;
  23.     }
  24. }
  25.  
  26. class mozi{
  27.     public String cim;
  28.     public int ev;
  29.     public String rendezo;
  30.     public int koltseg;
  31.     public int bevetel;
  32.  
  33.     public mozi(String cim, int ev, String rendezo, int koltseg, int bevetel) {
  34.         this.cim = cim;
  35.         this.ev = ev;
  36.         this.rendezo = rendezo;
  37.         this.koltseg = koltseg;
  38.         this.bevetel = bevetel;
  39.     }
  40. }
  41.  
  42. class kupon{
  43.     public String uzlet;
  44.     public String termek;
  45.     public int kedvezmeny;
  46.  
  47.     public kupon(String uzlet, String termek, int kedvezmeny) {
  48.         this.uzlet = uzlet;
  49.         this.termek = termek;
  50.         this.kedvezmeny = kedvezmeny;
  51.     }
  52.  
  53.     @Override
  54.     public String toString() {
  55.         return termek + " (" + uzlet + "): " + kedvezmeny + "%";
  56.     }
  57. }
  58.  
  59. class meccsek{
  60.     public String p1;
  61.     public String c1;
  62.     public String p2;
  63.     public String c2;
  64.  
  65.     public meccsek(String p1, String c1, String p2, String c2) {
  66.         this.p1 = p1;
  67.         this.c1 = c1;
  68.         this.p2 = p2;
  69.         this.c2 = c2;
  70.     }
  71.  
  72.     public List<Object> winner(/*String p1, String c1, String p2, String c2*/){
  73.         List<Object> win;
  74.         win = whoWins(p1, c1, c2);
  75.         if(win == null)
  76.             win = whoWins(p2, c2, c1);
  77.         return win;
  78.     }
  79.     public List<Object> whoWins(String p1, String c1, String c2){
  80.         if(c1.equals("ko") && c2.equals("ollo"))
  81.             return Arrays.asList(p1, c1);
  82.         else if(c1.equals("papir") && c2.equals("ko"))
  83.             return Arrays.asList(p1, c1);
  84.         else if(c1.equals("ollo") && c2.equals("papir"))
  85.             return Arrays.asList(p1, c1);
  86.         return null;
  87.     }
  88. }
  89. class wins{
  90.     public String player;
  91.     public ArrayList<String> choice = new ArrayList<>();
  92.  
  93.     public wins(String player, String choice) {
  94.         this.player = player;
  95.         this.choice.add(choice);
  96.     }
  97.  
  98.     @Override
  99.     public String toString() {
  100.         String line = this.player + ": ";
  101.         boolean first = true;
  102.         for (String choice: choice) {
  103.             if(first){
  104.                 line = line.concat(choice);
  105.                 first = false;
  106.             }
  107.             else
  108.                 line = line.concat(", " + choice);
  109.         }
  110.         return line;
  111.     }
  112. }
  113.  
  114. class tournaments{
  115.     String name;
  116.     ArrayList<csapatok> teams;
  117.     ArrayList<String[]> meccsek;
  118.  
  119.     public tournaments(String name, ArrayList<csapatok> teams, ArrayList<String[]> meccsek) {
  120.         this.name = name;
  121.         this.teams = teams;
  122.         this.meccsek = meccsek;
  123.         evaluateMatches();
  124.     }
  125.  
  126.     private void evaluateMatches(){
  127.         for (String[] elements: meccsek) {
  128.             evaluateMatch(elements[0], Integer.parseInt(elements[1]), Integer.parseInt(elements[2]));
  129.             evaluateMatch(elements[3], Integer.parseInt(elements[2]), Integer.parseInt(elements[1]));
  130.         }
  131.     }
  132.  
  133.     private void evaluateMatch(String team1, int score1, int score2){
  134.         for (csapatok csapat: teams) {
  135.             if(csapat.teamName.equals(team1)){
  136.                 csapat.shotGoals += score1;
  137.                 csapat.takenGoals += score2;
  138.                 if(score1 > score2) {
  139.                     csapat.wins++;
  140.                     csapat.points += 3;
  141.                 }
  142.                 else if(score1 < score2)
  143.                     csapat.loses++;
  144.                 else {
  145.                     csapat.draws++;
  146.                     csapat.points += 1;
  147.                 }
  148.                 csapat.matches++;
  149.             }
  150.         }
  151.     }
  152. }
  153. class csapatok{
  154.     String teamName;
  155.     int points;
  156.     int matches;
  157.     int wins;
  158.     int draws;
  159.     int loses;
  160.     int shotGoals;
  161.     int takenGoals;
  162.  
  163.     public csapatok(String teamName) {
  164.         this.teamName = teamName;
  165.         this.points = 0;
  166.         this.matches = 0;
  167.         this.wins = 0;
  168.         this.draws = 0;
  169.         this.loses = 0;
  170.         this.shotGoals = 0;
  171.         this.takenGoals = 0;
  172.     }
  173.  
  174.     @Override
  175.     public String toString() {
  176.         return teamName + " " + points + "p, " + matches + "g " + "(" + wins + "-" + draws + "-" + loses + "), " +
  177.                 (shotGoals-takenGoals) + "gd (" + shotGoals + "-" + takenGoals + ")\n";
  178.     }
  179. }
  180.  
  181. class kotet{
  182.     public String kotetNev;
  183.     public int penz;
  184.     ArrayList<alapanyag> alapanyagok;
  185.     ArrayList<recept> receptek;
  186.  
  187.     public kotet(String kotetNev, int penz, ArrayList<alapanyag> alapanyagok, ArrayList<recept> receptek) {
  188.         this.kotetNev = kotetNev;
  189.         this.penz = penz;
  190.         this.alapanyagok = alapanyagok;
  191.         this.receptek = receptek;
  192.     }
  193. }
  194. class alapanyag{
  195.     String alapanyag;
  196.     int ar;
  197.  
  198.     public alapanyag(String alapanyag, int ar) {
  199.         this.alapanyag = alapanyag;
  200.         this.ar = ar;
  201.     }
  202. }
  203. class recept{
  204.     String receptNev;
  205.     ArrayList<alapanyag> alapanyagok;
  206.     int koltseg;
  207.  
  208.     public recept(String receptNev, ArrayList<alapanyag> alapanyagok, int koltseg) {
  209.         this.receptNev = receptNev;
  210.         this.alapanyagok = alapanyagok;
  211.         this.koltseg = koltseg;
  212.     }
  213. }
  214.  
  215. public class Test
  216. {
  217.     public static void main(String[] args) throws Exception
  218.     {
  219.         //HullamvasutMain();
  220.         //MoziMain();
  221.         //KuponMain();
  222.         //RPSMain();
  223.         //UszoversenyMain();
  224.         //FutballMain();
  225.         CookingMain();
  226.     }
  227.  
  228.     public static void HullamvasutMain() throws Exception{
  229.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  230.         int n = Integer.parseInt(br.readLine());
  231.  
  232.         ArrayList<vidampark> lista = new ArrayList<>();
  233.         for(int i = 0; i < n; i++)
  234.         {
  235.             String[] sor = br.readLine().split(";");
  236.             lista.add(new vidampark(sor[0], sor[1], Integer.parseInt(sor[2]), Integer.parseInt(sor[3])));
  237.         }
  238.  
  239.         Collections.sort(lista, new Comparator<>() {
  240.             @Override
  241.             public int compare(vidampark v1, vidampark v2)
  242.             {
  243.                 if(v1.ido == v2.ido){
  244.                     return v2.magassag-v1.magassag;
  245.                 }
  246.                 else {
  247.                     return v1.ido-v2.ido;
  248.                 }
  249.             }
  250.         });
  251.  
  252.  
  253.         for (vidampark vidampark: lista)
  254.         {
  255.             System.out.println(vidampark.toString());
  256.         }
  257.     }
  258.  
  259.     public static void MoziMain() throws Exception{
  260.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  261.         int n = Integer.parseInt(br.readLine());
  262.         ArrayList<mozi> lista = new ArrayList<>();
  263.         for(int i = 0; i < n; i++){
  264.             String[] sor = br.readLine().split(";");
  265.             lista.add(new mozi(sor[0], Integer.parseInt(sor[1]), sor[2], Integer.parseInt(sor[3]),Integer.parseInt(sor[4])));
  266.         }
  267.  
  268.         Collections.sort(lista, new Comparator<>() {
  269.             @Override
  270.             public int compare(mozi m1, mozi m2)
  271.             {
  272.                 if((m2.bevetel-m2.koltseg)!=(m1.bevetel-m1.koltseg)){
  273.                     return (m2.bevetel-m2.koltseg)-(m1.bevetel-m1.koltseg);
  274.                 }
  275.                 else if(m1.ev != m2.ev){
  276.                     return m1.ev-m2.ev;
  277.                 }
  278.                 else if(m1.bevetel != m2.bevetel){
  279.                     return m2.bevetel-m1.bevetel;
  280.                 }
  281.                 else{
  282.                     return m1.cim.compareTo(m2.cim);
  283.                 }
  284.             }
  285.         });
  286.  
  287.         for (mozi mozi: lista) {
  288.             System.out.println(mozi.cim);
  289.         }
  290.     }
  291.  
  292.     public static void KuponMain() throws Exception{
  293.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  294.         int n = Integer.parseInt(br.readLine());
  295.         ArrayList<kupon> lista = new ArrayList<>();
  296.         for(int i = 0; i < n; i++){
  297.             String[] sor = br.readLine().split(";");
  298.             lista.add(new kupon(sor[0], sor[1], Integer.parseInt(sor[2])));
  299.         }
  300.  
  301.         Collections.sort(lista, new Comparator<>() {
  302.             @Override
  303.             public int compare(kupon k1, kupon k2)
  304.             {
  305.                 if(k1.kedvezmeny != k2.kedvezmeny){
  306.                     return k2.kedvezmeny-k1.kedvezmeny;
  307.                 }
  308.                 else if(!k1.uzlet.equals(k2.uzlet)){
  309.                     return k1.uzlet.compareTo(k2.uzlet);
  310.                 }
  311.                 else {
  312.                     return k1.termek.compareTo(k2.termek);
  313.                 }
  314.             }
  315.         });
  316.  
  317.         for (kupon kupon: lista) {
  318.             System.out.println(kupon.toString());
  319.         }
  320.         System.out.println();
  321.  
  322.         Collections.sort(lista, new Comparator<>() {
  323.             @Override
  324.             public int compare(kupon k1, kupon k2)
  325.             {
  326.                 if(!k1.uzlet.equals(k2.uzlet)){
  327.                     return k1.uzlet.compareTo(k2.uzlet);
  328.                 }
  329.                 else if(k2.kedvezmeny != k1.kedvezmeny){
  330.                     return k2.kedvezmeny-k1.kedvezmeny;
  331.                 }
  332.                 else {
  333.                     return k1.termek.compareTo(k2.termek);
  334.                 }
  335.             }
  336.         });
  337.  
  338.         for (kupon kupon: lista) {
  339.             System.out.println(kupon.toString());
  340.         }
  341.     }
  342.  
  343.     public static void RPSMain() throws Exception{
  344.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  345.  
  346.         ArrayList<meccsek> meccsek = new ArrayList<>();
  347.         ArrayList<wins> wins = new ArrayList<>();
  348.         String line;
  349.  
  350.         while((line = br.readLine()) != null && !line.equals("EOF"))
  351.         {
  352.             String[] sor = line.split(";");
  353.             meccsek.add(new meccsek(sor[0], sor[1], sor[2], sor[3]));
  354.         }
  355.  
  356.         for (meccsek meccs: meccsek) {
  357.             List<Object> thisWin = meccs.winner();
  358.             if(thisWin != null) {
  359.                 boolean contains = false;
  360.                 for (wins win : wins) {
  361.                     if (win.player.equals(thisWin.toArray()[0])) {
  362.                         win.choice.add(thisWin.toArray()[1].toString());
  363.                         contains = true;
  364.                     }
  365.                 }
  366.                 if (!contains)
  367.                     wins.add(new wins(thisWin.toArray()[0].toString(), thisWin.toArray()[1].toString()));
  368.             }
  369.         }
  370.  
  371.         Collections.sort(wins, new Comparator<>() {
  372.             @Override
  373.             public int compare(wins w1, wins w2)
  374.             {
  375.                 return w1.player.compareTo(w2.player);
  376.             }
  377.         });
  378.  
  379.         for (wins wins1: wins) {
  380.             System.out.println(wins1.toString());
  381.         }
  382.     }
  383.  
  384.     public static void UszoversenyMain() throws Exception{
  385.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  386.         int versenyzok = Integer.parseInt(br.readLine());
  387.         String line;
  388.         TreeSet<Integer> szamok = new TreeSet<>();
  389.         while((line = br.readLine()) != null && !line.equals("EOF")){
  390.             String[] elemek = line.split(" ");
  391.             for (String elem: elemek) {
  392.                 szamok.add(Integer.parseInt(elem));
  393.             }
  394.         }
  395.  
  396.         boolean elso = true;
  397.         for (int i = 1; i <= versenyzok; i++){
  398.             if(!szamok.contains(i)) {
  399.                 if(elso) {
  400.                     elso = false;
  401.                     System.out.print(i);
  402.                 }
  403.                 else
  404.                     System.out.print(" " + i);
  405.             }
  406.         }
  407.         System.out.print("\n");
  408.     }
  409.  
  410.     public static void FutballMain() throws Exception {
  411.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  412.         ArrayList<tournaments> tournaments = new ArrayList<>();
  413.  
  414.         int tournamentNum = Integer.parseInt(br.readLine());
  415.         for (int i = 0; i < tournamentNum; i++) {
  416.             String tournamentName = br.readLine();
  417.             ArrayList<csapatok> teamNames = new ArrayList<>();
  418.             ArrayList<String[]> focimeccsek = new ArrayList<>();
  419.  
  420.             int teamNum = Integer.parseInt(br.readLine());
  421.             for (int j = 0; j < teamNum; j++) {
  422.                 teamNames.add(new csapatok(br.readLine()));
  423.             }
  424.  
  425.             int merkozesNum = Integer.parseInt(br.readLine());
  426.             for (int j = 0; j < merkozesNum; j++) {
  427.                 String[] sor = br.readLine().split("[#@]+");
  428.                 focimeccsek.add(sor);
  429.             }
  430.             tournaments.add(new tournaments(tournamentName, teamNames, focimeccsek));
  431.         }
  432.  
  433.         for (tournaments tournament: tournaments) {
  434.             Collections.sort(tournament.teams, new Comparator<csapatok>() {
  435.                 @Override
  436.                 public int compare(csapatok o1, csapatok o2) {
  437.                     if(o1.points != o2.points)
  438.                         return o2.points - o1.points;
  439.                     else if(o1.wins != o2.wins)
  440.                         return o2.wins - o1.wins;
  441.                     else if((o1.shotGoals-o1.takenGoals) != (o2.shotGoals-o2.takenGoals)){
  442.                         return (o2.shotGoals-o2.takenGoals) - (o1.shotGoals-o1.takenGoals);
  443.                     }
  444.                     else if(o1.shotGoals != o2.shotGoals){
  445.                         return  o2.shotGoals-o1.shotGoals;
  446.                     }
  447.                     else if(o1.matches != o2.matches){
  448.                         return o1.matches - o2.matches;
  449.                     }
  450.                     else
  451.                         return o1.teamName.toLowerCase().compareTo(o2.teamName.toLowerCase());
  452.                 }
  453.             });
  454.         }
  455.  
  456.         boolean first = true;
  457.         for (tournaments tournament: tournaments) {
  458.             if(first) {
  459.                 first = false;
  460.                 System.out.println(tournament.name);
  461.             }
  462.             else
  463.                 System.out.println("\n" + tournament.name);
  464.             for(int i = 0; i < tournament.teams.size(); i++){
  465.                 System.out.print((i+1) + ") " + tournament.teams.get(i).toString());
  466.             }
  467.         }
  468.     }
  469.  
  470.     public static void CookingMain() throws Exception{
  471.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  472.  
  473.         int kotetNum = Integer.parseInt(br.readLine());
  474.         ArrayList<kotet> kotetek = new ArrayList<>();
  475.         for (int i = 0; i < kotetNum; i++){
  476.             String kotetName = br.readLine();
  477.  
  478.             int m, n, b;
  479.             String[] elemek = br.readLine().split(" ");
  480.             m = Integer.parseInt(elemek[0]);
  481.             n = Integer.parseInt(elemek[1]);
  482.             b = Integer.parseInt(elemek[2]);
  483.  
  484.             ArrayList<alapanyag> alapanyagok = new ArrayList<>();
  485.             for (int j = 0; j<m; j++){
  486.                 String[] sor = br.readLine().split(" ");
  487.                 alapanyagok.add(new alapanyag(sor[0], Integer.parseInt(sor[1])));
  488.             }
  489.  
  490.             ArrayList<recept> receptek = new ArrayList<>();
  491.             for (int j = 0; j<n; j++){
  492.                 String receptNev = br.readLine();
  493.                 int hozzavalokNum = Integer.parseInt(br.readLine());
  494.                 int koltseg = 0;
  495.  
  496.                 ArrayList<alapanyag> hozzavalok = new ArrayList<>();
  497.  
  498.                 for (int k = 0; k<hozzavalokNum; k++){
  499.                     String[] sor = br.readLine().split(" ");
  500.                     hozzavalok.add(new alapanyag(sor[0], Integer.parseInt(sor[1])));
  501.  
  502.                     for (alapanyag alapanyag: alapanyagok)
  503.                         if(sor[0].equals(alapanyag.alapanyag))
  504.                             koltseg += alapanyag.ar*Integer.parseInt(sor[1]);
  505.                 }
  506.                 receptek.add(new recept(receptNev, hozzavalok, koltseg));
  507.             }
  508.             kotetek.add(new kotet(kotetName, b, alapanyagok, receptek));
  509.         }
  510.  
  511.         for (kotet kotet: kotetek) {
  512.             Collections.sort(kotet.receptek, new Comparator<recept>() {
  513.                 @Override
  514.                 public int compare(recept o1, recept o2) {
  515.                     if(o1.koltseg != o2.koltseg)
  516.                         return o1.koltseg-o2.koltseg;
  517.                     else
  518.                         return o1.receptNev.compareTo(o2.receptNev);
  519.                 }
  520.             });
  521.         }
  522.  
  523.         for (kotet kotet: kotetek) {
  524.             System.out.println(kotet.kotetNev.toUpperCase());
  525.             int db = 0;
  526.             for (recept recept: kotet.receptek)
  527.                 if(kotet.penz > recept.koltseg) {
  528.                     System.out.println(recept.receptNev);
  529.                     db++;
  530.                 }
  531.             if(db == 0)
  532.                 System.out.println("Too expensive!");
  533.             System.out.println();
  534.         }
  535.     }
  536. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement