Niestety, nie byliśmy w stanie w pełni poprawnie wyświetlić tego pliku, ponieważ nie jest zakodowany w UTF-8.
Możesz pobrać ten plik i spróbować otworzyć go samodzielnie.
/* Wej�cie Pierwszy wiersz wej�cia zawiera jedn� liczb� ca�kowit� n (1 ? n ? 1000000) oznaczaj�c� liczb� monet w�o�onych przez Bajtka do skarbonki. Nast�pny wiersz zawiera opis wszystkich tych monet. Zawiera on ci�g n liczb naturalnych a1,a2,...,an (0 ? ai ? 201718), kt�ry oznacza, �e warto�ci monet w skarbonce s� r�wne kolejno 2a1,2a2,...,2an bajtoz�otych. Wyj�cie Pierwszy i jedyny wiersz wyj�cia powinien zawiera� jedn� liczb� naturaln� b oznaczaj�c�, �e najbardziej warto�ciowa z monet, jak� jest w stanie uzyska� Bajtek, ma nomina� 2b bajtoz�otych. Przyk�ad Dla danych wej�ciowych: 5 3 4 1 3 3 poprawnym wynikiem jest: 5 */ #include<iostream> #include<string> #include <fstream> #include<map> #include<vector> #include<algorithm> #include<cmath> using namespace std; int zapis_bitowy[201739]; int wykladniki[1000001]; int max_wykladnik_sumy; int liczba_monet; void inicjalizuj_zmienne(); void wczytaj_dane(); void wypisz_wynik(); void dodaj_liczbe(int liczba); bool Master_Trace_Flag; int pause; int main(){ int k,j; Master_Trace_Flag=false; inicjalizuj_zmienne(); wczytaj_dane(); for(k=1;k<=liczba_monet;k++) dodaj_liczbe(wykladniki[k]); wypisz_wynik(); /*cin >> pause;*/ return 0; } void wczytaj_dane(){ int k; cin >> liczba_monet; for(k=1;k<=liczba_monet;k++) cin >> wykladniki[k]; sort(wykladniki, wykladniki+liczba_monet+1); if(Master_Trace_Flag) for(k=1;k<=liczba_monet;k++) cout << wykladniki[k] << endl; } void wypisz_wynik(){ cout << max_wykladnik_sumy << endl; } void inicjalizuj_zmienne(){ int k; max_wykladnik_sumy=1; for(k=1;k<=201739;k++) zapis_bitowy[k]=0; } void dodaj_liczbe(int liczba){ int aktualny_wykladnik; aktualny_wykladnik=liczba; while(true){ if(zapis_bitowy[aktualny_wykladnik]==0){ zapis_bitowy[aktualny_wykladnik]=1; break;} zapis_bitowy[aktualny_wykladnik]=0; aktualny_wykladnik++; } if(aktualny_wykladnik>max_wykladnik_sumy) max_wykladnik_sumy=aktualny_wykladnik; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | /* Wej�cie Pierwszy wiersz wej�cia zawiera jedn� liczb� ca�kowit� n (1 ? n ? 1000000) oznaczaj�c� liczb� monet w�o�onych przez Bajtka do skarbonki. Nast�pny wiersz zawiera opis wszystkich tych monet. Zawiera on ci�g n liczb naturalnych a1,a2,...,an (0 ? ai ? 201718), kt�ry oznacza, �e warto�ci monet w skarbonce s� r�wne kolejno 2a1,2a2,...,2an bajtoz�otych. Wyj�cie Pierwszy i jedyny wiersz wyj�cia powinien zawiera� jedn� liczb� naturaln� b oznaczaj�c�, �e najbardziej warto�ciowa z monet, jak� jest w stanie uzyska� Bajtek, ma nomina� 2b bajtoz�otych. Przyk�ad Dla danych wej�ciowych: 5 3 4 1 3 3 poprawnym wynikiem jest: 5 */ #include<iostream> #include<string> #include <fstream> #include<map> #include<vector> #include<algorithm> #include<cmath> using namespace std; int zapis_bitowy[201739]; int wykladniki[1000001]; int max_wykladnik_sumy; int liczba_monet; void inicjalizuj_zmienne(); void wczytaj_dane(); void wypisz_wynik(); void dodaj_liczbe(int liczba); bool Master_Trace_Flag; int pause; int main(){ int k,j; Master_Trace_Flag=false; inicjalizuj_zmienne(); wczytaj_dane(); for(k=1;k<=liczba_monet;k++) dodaj_liczbe(wykladniki[k]); wypisz_wynik(); /*cin >> pause;*/ return 0; } void wczytaj_dane(){ int k; cin >> liczba_monet; for(k=1;k<=liczba_monet;k++) cin >> wykladniki[k]; sort(wykladniki, wykladniki+liczba_monet+1); if(Master_Trace_Flag) for(k=1;k<=liczba_monet;k++) cout << wykladniki[k] << endl; } void wypisz_wynik(){ cout << max_wykladnik_sumy << endl; } void inicjalizuj_zmienne(){ int k; max_wykladnik_sumy=1; for(k=1;k<=201739;k++) zapis_bitowy[k]=0; } void dodaj_liczbe(int liczba){ int aktualny_wykladnik; aktualny_wykladnik=liczba; while(true){ if(zapis_bitowy[aktualny_wykladnik]==0){ zapis_bitowy[aktualny_wykladnik]=1; break;} zapis_bitowy[aktualny_wykladnik]=0; aktualny_wykladnik++; } if(aktualny_wykladnik>max_wykladnik_sumy) max_wykladnik_sumy=aktualny_wykladnik; } |