浙大PAT甲级 1084

来源:互联网 发布:广联达造价软件价格 编辑:程序博客网 时间:2024/05/22 13:47

先排序然后二分查找临界点。

AC代码:

#include<iostream>#include<map>#include<cstdio>#include<algorithm>#include<queue>#include<cstring>#include<list>#include<set>#include<stack>#include<cmath>#include<vector>#define ll long long#define inf 999999999using namespace std;int n;struct node{    string name;    string id;    int num;};node a[1000000];bool cmp(node x,node y){    return x.num>y.num;}int f(int x){    int q=0,w=n-1;    while(q<=w)    {       int mid=(q+w)/2;    if(a[mid].num>x)    {        q=mid+1;    }    else if(a[mid].num<x)    {        w=mid-1;    }    else    {        return mid;    }    }    return q;}int main(){    scanf("%d",&n);    for(int i=0;i<n;i++)    {        cin>>a[i].name>>a[i].id>>a[i].num;    }    int l,r;    scanf("%d %d",&l,&r);    sort(a,a+n,cmp);    int res=f(r);    int flag=0;    for(int i=res;;i++)    {        if(a[i].num>=l)        {            cout<<a[i].name<<" "<<a[i].id<<endl;            flag=1;        }        else        {            break;        }    }    if(flag==0)    {        printf("NONE\n");    }}


0 0