Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Вот сюда нужно будет в первой работе с гитом добавит свое ФИО

## ФИО
## Иванова Мария Алексеевна

## Работа с репозиторием

Expand Down
44 changes: 44 additions & 0 deletions golang/internal/module2/bubblesort.go
Original file line number Diff line number Diff line change
@@ -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")
}
}
37 changes: 37 additions & 0 deletions golang/internal/module2/differentcount.go
Original file line number Diff line number Diff line change
@@ -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)
}
39 changes: 39 additions & 0 deletions golang/internal/module2/inversioncount.go
Original file line number Diff line number Diff line change
@@ -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)

}
39 changes: 39 additions & 0 deletions golang/internal/module2/mergesort.go
Original file line number Diff line number Diff line change
@@ -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
}
55 changes: 55 additions & 0 deletions golang/internal/module2/pairsort.go
Original file line number Diff line number Diff line change
@@ -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()
}
}
30 changes: 30 additions & 0 deletions golang/internal/module2/stock.go
Original file line number Diff line number Diff line change
@@ -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")
}
}
}
33 changes: 33 additions & 0 deletions golang/main.go
Original file line number Diff line number Diff line change
@@ -1,12 +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()
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()

}