Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.io.File;
- import java.io.PrintWriter;
- import java.util.*;
- public class Main {
- public static void main(String[] args) {
- Paliwo paliwo = new Paliwo();
- }
- }
- class Krysztal
- {
- public int[] x = new int[3];
- public ArrayList<Integer> uzyteId = new ArrayList<Integer>();
- public Krysztal()
- {
- x[0] = 0;
- x[1] = 0;
- x[2] = 0;
- }
- public Krysztal(int aaa)
- {
- x[0] = aaa;
- }
- public void dodajId(int id)
- {
- uzyteId.add(id);
- }
- }
- class Paliwo
- {
- public int iloscKrysztalow;
- public Paliwo()
- {
- StreamReader plik = new StreamReader("in.txt");
- iloscKrysztalow = Convert.ToInt32(Console.ReadLine());
- //iloscKrysztalow = Convert.ToInt32(plik.ReadLine());
- plik.ReadLine();
- Krysztal[] krysztaly = new Krysztal[iloscKrysztalow];
- ArrayList<Krysztal> krysztal2 = new ArrayList<Krysztal>();
- int nr = 0;
- String bufor;
- while ((bufor = plik.ReadLine()) != null)
- {
- bufor = bufor + ' ';
- Krysztal buforKrysztal = new Krysztal();
- int id = 0;
- for (int i = 0; i < bufor.Length - 1; i += 2)
- {
- if (Char.IsDigit(bufor[i + 1]) == true)
- {
- buforKrysztal.x[id] = (Convert.ToInt32(bufor[i]) - 48) * 10 + Convert.ToInt32(bufor[i + 1]) - 48;
- i++;
- id++;
- }
- else
- {
- buforKrysztal.x[id] = Convert.ToInt32(bufor[i]) - 48;
- id++;
- }
- }
- krysztaly[nr] = buforKrysztal;
- krysztal2.add(buforKrysztal);
- krysztaly[nr].dodajId(nr);
- nr++;
- }
- plik.Close();
- int maks = maxTon(krysztaly);
- for (int i = maks; i > 0; i--)
- {
- System.out.println("Witam");
- sprawdzanie(i, krysztaly, krysztal2);
- }
- }
- public void sortowanie(Krysztal[] krysztaly)
- {
- for (int i = 0; i < iloscKrysztalow; i++)
- {
- for (int j = 1; j < iloscKrysztalow; j++)
- {
- int sumaG = 0, sumaD = 0;
- sumaG = krysztaly[j - 1].x[0] + krysztaly[j - 1].x[1] + krysztaly[j - 1].x[2];
- sumaD = krysztaly[j].x[0] + krysztaly[j].x[1] + krysztaly[j].x[2];
- if (sumaG < sumaD)
- {
- Krysztal bufor = new Krysztal();
- bufor = krysztaly[j];
- krysztaly[j] = krysztaly[j - 1];
- krysztaly[j - 1] = bufor;
- }
- }
- }
- }
- public int maxTon(Krysztal[] krysztaly)
- {
- int wynik = 0;
- Krysztal czek = new Krysztal();
- for (int i = 0; i < krysztaly.length; i++)
- {
- czek.x[0] += krysztaly[i].x[0];
- czek.x[1] += krysztaly[i].x[1];
- czek.x[2] += krysztaly[i].x[2];
- }
- if (czek.x[0] < czek.x[1]) wynik = czek.x[0];
- else wynik = czek.x[1];
- if (wynik > czek.x[2]) wynik = czek.x[2];
- if (wynik > 100) wynik = 100;
- return wynik;
- }
- public boolean check(Krysztal krysztal, Krysztal[] buff)
- {
- boolean wynik = false;
- int x = 0, y = 0, z = 0;
- for (int i = 0; i < iloscKrysztalow; i++)
- {
- if (krysztal.uzyteId.contains(i) == true)
- {
- x += buff[i].x[0];
- y += buff[i].x[1];
- z += buff[i].x[2];
- }
- }
- //Console.WriteLine(x + " " + y + " " + z);
- if (x == y && y == z) wynik = true;
- if (wynik == true)
- {
- System.out.println("Zdobyta ilosc paliwa: " + x * 3);
- System.out.println("Kupione kryształy: " + krysztal.uzyteId.size());
- }
- return wynik;
- }
- public int sprawdzanie(int maxTon, Krysztal[] buff, ArrayList<Krysztal> buff2)
- {
- ArrayList<Krysztal> krzystal2 = new ArrayList<Krysztal>();
- int czyDalej = 0;
- for (int i = 0; i < buff2.size(); i++)
- {
- for (int j = 0; j < iloscKrysztalow; j++)
- {
- if (buff2.get(i).uzyteId.contains(j) == true) continue;
- int xd = buff2.get(i).x[0] + buff[j].x[0];
- if (xd > maxTon) continue;
- Krysztal dodatkowy = new Krysztal();
- for (int k = 0; k < iloscKrysztalow; k++)
- {
- if (buff2.get(i).uzyteId.contains(k)) dodatkowy.dodajId(k);
- }
- dodatkowy.x[0] = xd;
- krzystal2.add(dodatkowy);
- krzystal2.get(krzystal2.size() - 1).dodajId(j);
- czyDalej++;
- if (xd == maxTon)
- {
- if (check(dodatkowy, buff) == true)
- {
- return 0;
- }
- continue;
- }
- }
- }
- if (czyDalej != 0) sprawdzanie(maxTon, buff, krzystal2);
- return 0;
- }
- public void wypisz(Krysztal[] krysztaly)
- {
- for (int i = 0; i < krysztaly.length; i++)
- {
- System.out.println(krysztaly[i].x[0] + " " + krysztaly[i].x[1] + " " + krysztaly[i].x[2]);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement