2020秋招笔试依图科技编程题

2020秋招笔试编程题

依图科技算法岗

第三题

题目描述

一堆直线上有n个点,坐标都是整数
有m个区间,每个区间有两个端点left,right;left<=right,left,right都是整数,对于每个点,有多少区间包含这个点
输入描述:

第一行输入为T,表示有T组测试样例
每组测试样例
接下来一行有两个整数 n 和 m,表示有n个点和m个区间
接下来一行 n个正整数,空格分隔,表示n个点的坐标,记为a[1...n]
接下来m,每行两个整数表示一个区间

输出描述:

输出:对于每组测试样例,先输出一行“Case #d%:”表示第几组测试样例
对于改组测试样例的每个点,输出一行,包含一个整数,表示包含这个点的区间的个数

示例
输入

2
10 5
0 1 2 3 4 5 6 7 8 9
0 5
10 20
-5 -3
7 7
100 105
5 1
1 1 1 1 1
0 2

输出

Case #1:
1
1
1
1
1
1
0
1
0
0
Case #2:
1
1
1
1
1

Python代码

def get_data():
    data1 = list()
    arr_a = list()
    n,m = list(map(int,input().split()))
    data1.append(list(map(int,input().split())))
    for i in range(m):
        arr = list(map(int,input().split()))
        arr_a.append(arr)
    data1.append(arr_a)
    return data1
if __name__ == "__main__":
    T = int(input())
    data_s=list()
    for i in range(T):
        data_s.append(get_data())

    for data in data_s:
        print("Case #" + str(data_s.index(data)+1) + ":")
        for num in data[0]:
            c_n=0
            for range_n in data[1]:
                if num in range(range_n[0],range_n[1]+1):
                    c_n =c_n +1
            print(c_n)

你可能感兴趣的:(秋招试题)