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; } |
English