From e9db3a77c7d01b8798aaa5a846d3f1da2aff3d09 Mon Sep 17 00:00:00 2001 From: Mary2811 Date: Mon, 27 Feb 2023 21:28:12 +0300 Subject: [PATCH 1/3] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB?= =?UTF-8?q?=D0=B0=20=D0=A4=D0=98=D0=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 714ee32..f2a1420 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Вот сюда нужно будет в первой работе с гитом добавит свое ФИО -## ФИО +## Иванова Мария Алексеевна ## Работа с репозиторием From 8c4532808e770089b567d93f44fef67eaf1487f8 Mon Sep 17 00:00:00 2001 From: Mary2811 Date: Mon, 27 Feb 2023 21:37:20 +0300 Subject: [PATCH 2/3] Add bubblesort --- golang/internal/module1/summ.go | 35 +++++++++++++++++++++++++++++++++ golang/main.go | 1 + 2 files changed, 36 insertions(+) diff --git a/golang/internal/module1/summ.go b/golang/internal/module1/summ.go index 79b914a..7600d11 100644 --- a/golang/internal/module1/summ.go +++ b/golang/internal/module1/summ.go @@ -23,3 +23,38 @@ func Summ() { summ := a + b fmt.Println(summ) } + +func BubbleSort() { + var n int + fmt.Scanln(&n) + reader := bufio.NewReader(os.Stdin) + line, err := reader.ReadString('\n') + if err != nil { + panic(err) + } + line = strings.TrimSuffix(line, "\n") + line = strings.TrimSuffix(line, "\r") + str_arr := strings.Split(line, " ") + arr := make([]int, n) + for idx, val := range str_arr { + arr[idx], err = strconv.Atoi(val) + if err != nil { + panic(err) + } + } + num_swaps := 0 + for i := 0; i <= n-1; i++ { + for j := 0; j < n-1-i; j++ { + if arr[j] > arr[j+1] { + tmp := arr[j+1] + arr[j+1] = arr[j] + arr[j] = tmp + num_swaps += 1 + fmt.Println(strings.Trim(fmt.Sprint(arr), "[]")) + } + } + } + if num_swaps == 0 { + fmt.Println("0") + } +} diff --git a/golang/main.go b/golang/main.go index 8d32ddc..d794941 100644 --- a/golang/main.go +++ b/golang/main.go @@ -9,4 +9,5 @@ import ( func main() { fmt.Println("Hello world") module1.Summ() + module1.BubbleSort() } From 8c4b011a84643b35ba27e183ad1d5eadc1031a55 Mon Sep 17 00:00:00 2001 From: Mary2811 Date: Tue, 14 Mar 2023 19:56:08 +0300 Subject: [PATCH 3/3] add module 2 --- golang/internal/module1/summ.go | 35 --------------- golang/internal/module2/bubblesort.go | 44 ++++++++++++++++++ golang/internal/module2/differentcount.go | 37 +++++++++++++++ golang/internal/module2/inversioncount.go | 39 ++++++++++++++++ golang/internal/module2/mergesort.go | 39 ++++++++++++++++ golang/internal/module2/pairsort.go | 55 +++++++++++++++++++++++ golang/internal/module2/stock.go | 30 +++++++++++++ golang/main.go | 34 +++++++++++++- 8 files changed, 277 insertions(+), 36 deletions(-) create mode 100644 golang/internal/module2/bubblesort.go create mode 100644 golang/internal/module2/differentcount.go create mode 100644 golang/internal/module2/inversioncount.go create mode 100644 golang/internal/module2/mergesort.go create mode 100644 golang/internal/module2/pairsort.go create mode 100644 golang/internal/module2/stock.go diff --git a/golang/internal/module1/summ.go b/golang/internal/module1/summ.go index 7600d11..79b914a 100644 --- a/golang/internal/module1/summ.go +++ b/golang/internal/module1/summ.go @@ -23,38 +23,3 @@ func Summ() { summ := a + b fmt.Println(summ) } - -func BubbleSort() { - var n int - fmt.Scanln(&n) - reader := bufio.NewReader(os.Stdin) - line, err := reader.ReadString('\n') - if err != nil { - panic(err) - } - line = strings.TrimSuffix(line, "\n") - line = strings.TrimSuffix(line, "\r") - str_arr := strings.Split(line, " ") - arr := make([]int, n) - for idx, val := range str_arr { - arr[idx], err = strconv.Atoi(val) - if err != nil { - panic(err) - } - } - num_swaps := 0 - for i := 0; i <= n-1; i++ { - for j := 0; j < n-1-i; j++ { - if arr[j] > arr[j+1] { - tmp := arr[j+1] - arr[j+1] = arr[j] - arr[j] = tmp - num_swaps += 1 - fmt.Println(strings.Trim(fmt.Sprint(arr), "[]")) - } - } - } - if num_swaps == 0 { - fmt.Println("0") - } -} diff --git a/golang/internal/module2/bubblesort.go b/golang/internal/module2/bubblesort.go new file mode 100644 index 0000000..a7b0ea1 --- /dev/null +++ b/golang/internal/module2/bubblesort.go @@ -0,0 +1,44 @@ +package module2 + +import ( + "bufio" + "fmt" + "os" + "strconv" + "strings" +) + +func BubbleSort() { + var n int + fmt.Scanln(&n) + reader := bufio.NewReader(os.Stdin) + line, err := reader.ReadString('\n') + if err != nil { + panic(err) + } + line = strings.TrimSuffix(line, "\n") + line = strings.TrimSuffix(line, "\r") + str_arr := strings.Split(line, " ") + arr := make([]int, n) + for idx, val := range str_arr { + arr[idx], err = strconv.Atoi(val) + if err != nil { + panic(err) + } + } + num_swaps := 0 + for i := 0; i <= n-1; i++ { + for j := 0; j < n-1-i; j++ { + if arr[j] > arr[j+1] { + tmp := arr[j+1] + arr[j+1] = arr[j] + arr[j] = tmp + num_swaps += 1 + fmt.Println(strings.Trim(fmt.Sprint(arr), "[]")) + } + } + } + if num_swaps == 0 { + fmt.Println("0") + } +} diff --git a/golang/internal/module2/differentcount.go b/golang/internal/module2/differentcount.go new file mode 100644 index 0000000..4e42790 --- /dev/null +++ b/golang/internal/module2/differentcount.go @@ -0,0 +1,37 @@ +package module2 + +import ( + "bufio" + "fmt" + "os" + "strconv" + "strings" +) + +func DifferentCount() { + var n int + fmt.Scanln(&n) + reader := bufio.NewReader(os.Stdin) + line, err := reader.ReadString('\n') + if err != nil { + panic(err) + } + line = strings.TrimSuffix(line, "\n") + line = strings.TrimSuffix(line, "\r") + str_arr := strings.Split(line, " ") + arr := make([]int, n) + for idx, val := range str_arr { + arr[idx], err = strconv.Atoi(val) + if err != nil { + panic(err) + } + } + arr1 := MergeSort(arr, 0, n) + counter := 1 + for i := 0; i < n-1; i++ { + if arr1[i] != arr1[i+1] { + counter++ + } + } + fmt.Println(counter) +} diff --git a/golang/internal/module2/inversioncount.go b/golang/internal/module2/inversioncount.go new file mode 100644 index 0000000..08b2598 --- /dev/null +++ b/golang/internal/module2/inversioncount.go @@ -0,0 +1,39 @@ +package module2 + +import ( + "bufio" + "fmt" + "os" + "strconv" + "strings" +) + +func InversionCount() { + var n int + fmt.Scanln(&n) + reader := bufio.NewReader(os.Stdin) + line, err := reader.ReadString('\n') + if err != nil { + panic(err) + } + line = strings.TrimSuffix(line, "\n") + line = strings.TrimSuffix(line, "\r") + str_arr := strings.Split(line, " ") + arr := make([]int, n) + for idx, val := range str_arr { + arr[idx], err = strconv.Atoi(val) + if err != nil { + panic(err) + } + } + count := 0 + for i := 0; i < n; i++ { + for j := i + 1; j < n; j++ { + if arr[i] > arr[j] { + count++ + } + } + } + fmt.Println(count) + +} diff --git a/golang/internal/module2/mergesort.go b/golang/internal/module2/mergesort.go new file mode 100644 index 0000000..fd1a4ad --- /dev/null +++ b/golang/internal/module2/mergesort.go @@ -0,0 +1,39 @@ +package module2 + +//"fmt" + +func merge(left []int, right []int) []int { + lst := make([]int, 0) + for len(left) > 0 && len(right) > 0 { + if left[0] < right[0] { + lst = append(lst, left[0]) + left = left[1:] + } else { + lst = append(lst, right[0]) + right = right[1:] + } + } + if len(left) > 0 { + lst = append(lst, left...) + } + if len(right) > 0 { + lst = append(lst, right...) + } + + return lst +} + +func MergeSort(arr []int, left int, right int) []int { + var res []int + if right-left == 1 { + res = make([]int, 1) + res[0] = arr[left] + return res + } + middle := (left + right) / 2 + leftPart := MergeSort(arr, left, middle) + rightPart := MergeSort(arr, middle, right) + res = merge(leftPart, rightPart) + //fmt.Println(left+1, right, res[0], res[len(res)-1]) + return res +} diff --git a/golang/internal/module2/pairsort.go b/golang/internal/module2/pairsort.go new file mode 100644 index 0000000..0a88ce5 --- /dev/null +++ b/golang/internal/module2/pairsort.go @@ -0,0 +1,55 @@ +package module2 + +import ( + "bufio" + "fmt" + "os" + "strconv" + "strings" +) + +func PairSort() { + var n int + fmt.Scanln(&n) + reader := bufio.NewReader(os.Stdin) + massiv := make([][]int, 0) + for i := 0; i < n; i++ { + line, err := reader.ReadString('\n') + if err != nil { + panic(err) + } + line = strings.TrimSuffix(line, "\n") + line = strings.TrimSuffix(line, "\r") + string_arr := strings.Split(line, " ") + int_arr := make([]int, 0) + for _, val := range string_arr { + intVal, _ := strconv.Atoi(val) + int_arr = append(int_arr, intVal) + } + massiv = append(massiv, int_arr) + + } + for i := 0; i <= n-1; i++ { + for j := 0; j < n-1-i; j++ { + if massiv[j+1][1] > massiv[j][1] { + point := massiv[j+1] + massiv[j+1] = massiv[j] + massiv[j] = point + } else if massiv[j][1] == massiv[j+1][1] { + if massiv[j+1][0] < massiv[j][0] { + point := massiv[j+1] + massiv[j+1] = massiv[j] + massiv[j] = point + } + } + } + } + for _, a := range massiv { + for _, b := range a { + string_b := strconv.Itoa(b) + fmt.Printf(string_b) + fmt.Printf(" ") + } + fmt.Println() + } +} diff --git a/golang/internal/module2/stock.go b/golang/internal/module2/stock.go new file mode 100644 index 0000000..b4527ab --- /dev/null +++ b/golang/internal/module2/stock.go @@ -0,0 +1,30 @@ +package module2 + +import ( + "fmt" + "os" +) + +func Stock() { + var n, m int + fmt.Fscan(os.Stdin, &n) + kind := make([]int, n) + for i := 0; i < n; i++ { + fmt.Fscan(os.Stdin, &kind[i]) + } + + fmt.Fscan(os.Stdin, &m) + for i := 0; i < m; i++ { + var b int + fmt.Fscan(os.Stdin, &b) + kind[b-1]-- + } + + for i := 0; i < n; i++ { + if kind[i] < 0 { + fmt.Println("yes") + } else { + fmt.Println("no") + } + } +} diff --git a/golang/main.go b/golang/main.go index d794941..e098dd2 100644 --- a/golang/main.go +++ b/golang/main.go @@ -1,13 +1,45 @@ package main import ( + "bufio" "fmt" + "os" + "strconv" + "strings" "isuct.ru/informatics2022/internal/module1" + "isuct.ru/informatics2022/internal/module2" ) func main() { fmt.Println("Hello world") module1.Summ() - module1.BubbleSort() + module2.BubbleSort() + module2.PairSort() + var n int + fmt.Scanln(&n) + reader := bufio.NewReader(os.Stdin) + line, err := reader.ReadString('\n') + if err != nil { + panic(err) + } + line = strings.TrimSuffix(line, "\n") + line = strings.TrimSuffix(line, "\r") + str_arr := strings.Split(line, " ") + arr := make([]int, n) + for idx, val := range str_arr { + arr[idx], err = strconv.Atoi(val) + if err != nil { + panic(err) + } + } + arr = module2.MergeSort(arr, 0, n) + for i := 0; i < n; i++ { + fmt.Print(arr[i], " ") + } + + module2.DifferentCount() + module2.InversionCount() + module2.Stock() + }