首页 > 试题广场 >

题目列表

[编程题]题目列表
  • 热度指数:1884 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
    小明同学收集了 n 道编程问题,他想做一个网站把这些题目放在上面,对于每一道问题给出问题的名称 name ,该问题的提交次数 X ,该问题的通过次数 Y。一个问题的通过率定义为 Y/X 。小明根据通过率把问题难度分了 3 个登记:
    1.通过率 ,难度为 5
    2.通过率 ,难度为 4
    3.通过率 ,难度为 3
    为了方便大家查阅题目,小明希望所有题目按照题目名称的字典序从小到大排列在网站上,并且能显示每个题目的难度,你能帮他实现吗?

数据范围: ,每个 name 的长度满足 ,name 中只有小写字母, 。保证输入的名称各不相同

输入描述:
输入一个数 n ,接下来有 n 行,每行输入一个字符串 name ,整数 X ,证书 Y ,依次表示每个题目的名称,提交次数和通过次数。


输出描述:
输出 n 行,按字典序从小到大排序后的题目,每行先输出一个字符串,题目的名称,再输出一个数,题目的难度等级用一个空格隔开。
示例1

输入

4
math 100 90
algorithm 10 8
string 50 1
dp 100 50

输出

algorithm 3
dp 4
math 3
string 5
package main

import (
    "fmt"
    "sort"
)

type Item struct{
    name string
    rate int
}

func main() {
    var n int
    fmt.Scan(&n)
    var name string
    var x,y float64
    arr:=make([]*Item,n)
    for i:=0;i<n;i++{
        fmt.Scan(&name,&x,&y)
        arr[i]=&Item{name,check(x,y)}
    }
    sort.Slice(arr,func(i,j int)bool{
        return arr[i].name<arr[j].name
    })
    for _,it:=range arr{
        fmt.Printf("%v %v\n",it.name,it.rate)
    }
}

func check(x,y float64)int{
    if y/x<=0.3{
        return 5
    }else if y/x<=0.6{
        return 4
    }
    return 3
}

发表于 2023-03-18 09:18:33 回复(0)

问题信息

难度:
1条回答 2773浏览

热门推荐

通过挑战的用户

查看代码