#include <iostream> #include <vector> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); // wczytanie danych i zliczenie monet o danych nominalach int ile_monet; cin>>ile_monet; vector<int> zliczanie_nomin(202000, 0); int wykladnik; for (int ii=0; ii<ile_monet; ii++) { cin>> wykladnik; zliczanie_nomin[wykladnik]++; } // zamiana monet na wyzsze nominaly - kazde dwie monety o mniejszym nominale // można zamienic na 1 monete o wiekszym nominale for (auto iter = zliczanie_nomin.begin(); iter != prev(zliczanie_nomin.end()); ++iter) if (*iter >1) { int ile_wiekszych = (*iter)/2; (*(iter+1)) += ile_wiekszych; } // znalezienie najwiekszego nominalu auto iter = zliczanie_nomin.end()-1; for(; iter!=zliczanie_nomin.begin(); --iter) { if (*iter > 0) break; } cout<< iter - zliczanie_nomin.begin()<<endl; return 0; }
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 | #include <iostream> #include <vector> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); // wczytanie danych i zliczenie monet o danych nominalach int ile_monet; cin>>ile_monet; vector<int> zliczanie_nomin(202000, 0); int wykladnik; for (int ii=0; ii<ile_monet; ii++) { cin>> wykladnik; zliczanie_nomin[wykladnik]++; } // zamiana monet na wyzsze nominaly - kazde dwie monety o mniejszym nominale // można zamienic na 1 monete o wiekszym nominale for (auto iter = zliczanie_nomin.begin(); iter != prev(zliczanie_nomin.end()); ++iter) if (*iter >1) { int ile_wiekszych = (*iter)/2; (*(iter+1)) += ile_wiekszych; } // znalezienie najwiekszego nominalu auto iter = zliczanie_nomin.end()-1; for(; iter!=zliczanie_nomin.begin(); --iter) { if (*iter > 0) break; } cout<< iter - zliczanie_nomin.begin()<<endl; return 0; } |