51nod3406 小明查成绩

3406 小明查成绩

小明的班级一用有n个学生,有语文,数学,英语三门课,每个学生都有三个成绩,现在小明给出了三个区间[a,b],[c,d],[e,f],小明想知道三门课成绩都在区间内的学生都有谁,聪明的你可以帮助小明解决这个问题吗?

输入

第 1 行:一个数字n(n<=10000),表示这个班级一个n个学生。
第 2~n+1 行:每行一个字符串和三个数字,分别代表这个学生的名字和他三门课的成绩;
第 n+2 行:包含一个数字k(k<=10),表示询问的次数
第 n+3 ~ n+2+k 行,每行6个数字,分别代表询问语文成绩的区间,数学成绩的区间,英语成绩的区间。
保证成绩小于等于100。

输出

对于每个询问,按照输入顺序输出成绩同时满足三个区间的所有学生的名字,每个学生的名字占一行。

输入样例

2
Alice 50 50 50
Bob 100 34 50
1
1 60 1 60 1 60

输出样例

Alice

解析:直接把每个人的成绩存到结构体里面,询问的时候进行遍历即可,时间复杂度O(nk)。

放代码:

#include <bits/stdc++.h>
using namespace std;
struct node{
    string name;
    int a,b,c;
}a[10005];
int main() { 
    ios::sync_with_stdio(false);
    int n,m,l[3],p[3],qw;
    cin >> n;
    for(int i=1; i<=n; i++){
        cin>>a[i].name>>a[i].a>>a[i].b>>a[i].c;
    }
    cin>>m;
    while(m--){
        for(int i=0; i<=2; i++)cin>>l[i]>>p[i];
        for(int i=1; i<=n; i++){
            bool flag=true;
            for(int j=0; j<=2; j++){
                if(j==0)qw=a[i].a;
                if(j==1)qw=a[i].b;
                if(j==2)qw=a[i].c;
                if(!(qw>=l[j]&&qw<=p[j])){
                    flag=false;
                    break;
                }
            }
            if(flag)cout<<a[i].name<<'\n';
        }
    }
	return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值