diff --git a/README.md b/README.md index 0551ede..1118fac 100644 --- a/README.md +++ b/README.md @@ -143,7 +143,7 @@ _WDP\* MIM UW_ - [zad_3](./src/cw6/zad3/zad3_sadzawka.cpp): autor: @pixelkubek (C++):white_check_mark: - [zad3_ms](./src/cw6/zad3/zad3_ms.cpp): autor: @MrD4rkne (C++) :white_check_mark: - [zad. 4.] - - [zad_4](./src/cw6/zad4/zad4.cpp): autor: @pixelkubek (C++) :white_check_mark: + - [zad_4](./src/cw6/zad4/zad4.cpp): autor: @pixelkubek (C++) :x: - [zad_4](./src/cw6/zad4/zad4_ms.cpp): autor: @MrD4rkne (C++) :white_check_mark: - [zad. 5.] - [katastrofy](./src/cw6/zad5/katastrofy.cpp) (C++) :white_check_mark::microscope: @@ -176,15 +176,21 @@ _WDP\* MIM UW_ - [bars_linear](./src/cw7/zad1/bars_linear.cpp) (C++) - [median_of_medians](./src/cw7/zad1/median_of_medians.cpp) (C++) - [zad1_ms](./src/cw7/zad1/zad1_ms.cpp): autor: @MrD4rkne (C++) :white_check_mark: + - [zad1_jc](./src/cw7/zad1/zad1jc.cpp): autor: @pixelkubek (C++) - [zad. 2.] - [contains_triangle](./src/cw7/zad2/contains_triangle.cpp) (C++) - [zad2_ms](./src/cw7/zad2/zad2_ms.cpp): autor: @MrD4rkne (C++) :white_check_mark: + - [zad2_jc](./src/cw7/zad2/zad2jc.cpp): autor: @pixelkubek (C++) +- [zad. 3.] + - [zad3_jc](./src/cw7/zad3/zad3jc.cpp): autor: @pixelkubek (C++) - [zad. 4.] - [max_combined_diff](./src/cw7/zad4/max_combined_diff.cpp) (C++) - [zad4_ms](./src/cw7/zad4/zad4_ms.cpp): autor: @MrD4rkne (C++) :white_check_mark: + - [zad4_jc](./src/cw7/zad4/zad4jc.cpp): autor: @pixelkubek (C++) - [zad. 5.] - [beakers](./src/cw7/zad5/beakers.cpp) (C++) - [zad5_ms](./src/cw7/zad5/zad5_ms.cpp): autor: @MrD4rkne (C++) :white_check_mark: + - [zad5_jc](./src/cw7/zad5/zad5jc.cpp): autor: @pixelkubek (C++) - [zad. 6.] - [rejs](./src/cw7/zad6/rejs.cpp) (C++) - [zad. 6.] @@ -222,7 +228,7 @@ _WDP\* MIM UW_ - [zad. 14.] - [zad14_jc](./src/cw8/zad14/zad14jc.cpp): autor: @pixelkubek (C++) :white_check_mark: - [zad. 15.] - - [zad15_jc](./src/cw8/zad15/zad15jc.cpp): autor: @pixelkubek (C++) :white_check_mark: + - [zad15_jc](./src/cw8/zad15/zad15jc.cpp): autor: @pixelkubek (C++) :x: - [zad. 16.] - [zad16_jc](./src/cw8/zad16/zad16jc.cpp): autor: @pixelkubek (C++) :white_check_mark: - [zad. 17.] @@ -260,6 +266,7 @@ _wkrótce_ - [zad. 1.] - [zad. 2.] + - [zad2_jc](./src/kol2_22/zad2jc.cpp): autor: @pixelkubek (C++) ### [Kolokwium III 2022/2023](./pdf/2022_III_Kolokwium.pdf) diff --git a/src/cw7/zad1/zad1jc.cpp b/src/cw7/zad1/zad1jc.cpp new file mode 100644 index 0000000..3d068ee --- /dev/null +++ b/src/cw7/zad1/zad1jc.cpp @@ -0,0 +1,27 @@ +#include +#include +#include + +int słupki(const std::vector s){ + std::vector kopia; + for(size_t i = 0; i < s.size(); i++){ + kopia.push_back(s[i]); + } + std::sort(kopia.begin(), kopia.end()); + + int mediana = kopia[kopia.size() / 2]; + + int wynik = 0; + + for(size_t i = 0; i < kopia.size(); i++){ + wynik += abs(kopia[i] - mediana); + } + + return wynik; +} + + +int main(){ + printf("%i\n", słupki({6, 4, 3, 4, 5, 2, 3})); + return 0; +} \ No newline at end of file diff --git a/src/cw7/zad2/zad2jc.cpp b/src/cw7/zad2/zad2jc.cpp new file mode 100644 index 0000000..e5ae6d2 --- /dev/null +++ b/src/cw7/zad2/zad2jc.cpp @@ -0,0 +1,19 @@ +#include +#include +#include + +bool trojkat(const std::vector v){ + std::vector kopia(v); + std::sort(kopia.begin(), kopia.end()); + + for(size_t i = 2; i < kopia.size(); i++){ + if(kopia[i] <= kopia[i - 1] + kopia[i - 2]) + return true; + } + + return false; +} + +int main(){ + printf("%i\n", trojkat({1, 5, 2, 4, 2, 4, 2})); +} \ No newline at end of file diff --git a/src/cw7/zad3/zad3jc.cpp b/src/cw7/zad3/zad3jc.cpp new file mode 100644 index 0000000..5587db0 --- /dev/null +++ b/src/cw7/zad3/zad3jc.cpp @@ -0,0 +1,56 @@ +#include +#include +#include +#include +#include + +int zaokrDod(int a, int b){ + if(2 * (a % b) >= b) + return a / b + 1; + return a / b; +} + +int zaokrDzielenie(int a, int b){ + return a * b > 0 ? zaokrDod(a, b) : -zaokrDod(abs(a), abs(b)); +} + +int przedzial(const std::vector x, int r){ + std::vector kopia(x); + std::sort(kopia.begin(), kopia.end()); + std::queue q; + + int suma = 0, elementy = 0, maxElementy = 0, wynik = 0; + int c; + bool wszystkieNaleza; + + for(size_t i = 0; i < kopia.size(); i++){ + q.push(kopia[i]); + suma += kopia[i]; + ++elementy; + + do + { + wszystkieNaleza = true; + c = zaokrDzielenie(suma, elementy); //c jest srednia z elementow + if(abs(q.front() - c) > r){ + suma -= q.front(); + --elementy; + q.pop(); + wszystkieNaleza = false; + } + } while (!wszystkieNaleza); + //dla konktertnego i bede usuwal mniejsze elementy az kopia[i] sie zalicza + + if(elementy > maxElementy){ + maxElementy = elementy; + wynik = c; + } + } + + return wynik; +} + +int main(){ + printf("%i\n", przedzial({2, -2, 5, -1, 11, 8, 4, 5, 8, 7}, 2)); + return 0; +} \ No newline at end of file diff --git a/src/cw7/zad4/zad4jc.cpp b/src/cw7/zad4/zad4jc.cpp new file mode 100644 index 0000000..db9884b --- /dev/null +++ b/src/cw7/zad4/zad4jc.cpp @@ -0,0 +1,35 @@ +#include +#include +#include + +std::vector przekładaniec(const std::vector x){ + std::vector v(x); + std::sort(v.begin(), v.end()); + std::vector wynik; + + size_t odwiedzone = 1; + size_t i = 0, j = v.size() - 1; + wynik.push_back(v[(v.size() - 1) / 2]); + + while (odwiedzone < v.size() - 1) + { + wynik.push_back(v[j--]); + wynik.push_back(v[i++]); + + odwiedzone += 2; + } + + if(odwiedzone < v.size()) + wynik.push_back(v[(v.size() - 1) / 2 + 1]); + + return wynik; +} + +int main(){ + std::vector wynik = przekładaniec({1, 2, 3, 4, 6}); + for(auto val : wynik) + printf("%lf ", val); + + printf("\n"); + return 0; +} \ No newline at end of file diff --git a/src/cw7/zad5/zad5jc.cpp b/src/cw7/zad5/zad5jc.cpp new file mode 100644 index 0000000..eab3e97 --- /dev/null +++ b/src/cw7/zad5/zad5jc.cpp @@ -0,0 +1,40 @@ +#include +#include +#include + +void przelej(std::queue &v, std::queue &q){ + float zlane = 0; + for(int i = 0; i < 2; i++){ + if(q.empty() || v.front() < q.front()){ + zlane += v.front(); + v.pop(); + } else { + zlane += q.front(); + q.pop(); + } + } + + q.push(zlane); +} + +float zlewki(const std::vector x, int k){ + std::queue v, q; + for(float val : x) v.push(val); + + for(int i = 0; i < k; ++i){ + przelej(v, q); + } + + if(!v.empty() && !q.empty()) + return std::min(v.front(), q.front()); + else if(v.empty()) + return q.front(); + else + return v.front(); + +} + +int main(){ + printf("%lf\n", zlewki({1, 2, 3, 4, 5}, 3)); + return 0; +} \ No newline at end of file diff --git a/src/kol2_22/zad2jc.cpp b/src/kol2_22/zad2jc.cpp new file mode 100644 index 0000000..a2862ed --- /dev/null +++ b/src/kol2_22/zad2jc.cpp @@ -0,0 +1,45 @@ +#include +#include + +typedef struct node *bin_tree; +struct node { + int val; + bin_tree left, right; +}; + +bin_tree newNode(int val){ + bin_tree nowy = (node*)malloc(sizeof(node)); + nowy->val = val; + nowy->left = nowy->right = NULL; + return nowy; +} + +void del_subtree(bin_tree t){ + if(t == NULL) return; + del_subtree(t->left); + del_subtree(t->right); + free(t); +} + +void bestify_subtree(bin_tree t, int maxx, int minn, bin_tree *pToME){ + if(!t) return; + if(t->val >= maxx || t->val <= minn){ + del_subtree(t); + *pToME = NULL; + return; + } + + bestify_subtree(t->left, t->val, minn, &(t->left)); + bestify_subtree(t->right, maxx, t->val, &(t->right)); +} + + +int main(){ + bin_tree t = newNode(10); + t->left = newNode(5); + t->left->right = newNode(15); + t->right = newNode(14); + + bestify_subtree(t, __INT16_MAX__, -__INT_MAX__, &t); + return 0; +} \ No newline at end of file