c++桐桐查单词

桐桐查单词 查看测评数据信息

今天桐桐接到一个任务,就是要把一篇英语文章翻译成中文。

对桐桐来说这任务实在太艰巨了,可怜的桐桐只好拿着英文字典,一句句慢慢翻译起来。

希望桐桐能在规定的时间内完成吧!

输入格式

第一行一个整数N,表示字典中一共有多少单词(N≤20000)。

接下来每两行表示一个单词,其中:

第一行是一个长度≤100的字符串,表示这个单词,全部小写字母,单词不会重复。

第二行是一个整数,表示这个单词在字典中的页码。

接下来一行是一个整数M,表示要查的单词数(M≤10000)。

接下来M行,每行一个字符串,表示要查的单词,保证在字典中存在。

输出格式

M行,每行一个整数,表示第i个单词在字典中的页数

输入/输出例子1

输入:

2

scan

10

word

15

2

scan

word

输出:

10

15

#include<bits/stdc++.h>
using namespace std;
struct word
{
    string s;
    int page;
}a[1000000];
int N,q;
bool cmp(word x,word y)
{
    return x.s<y.s;
}
int find(string X)
{
    if(X<a[1].s)return 0;
    if(X>a[N].s)return N;
    int L=1,R=N+1;
    while(L+1<R)
    {
        int mid=(L+R)/2;
        if(a[mid].s<=X)L=mid;
        else R=mid;
    }
    return a[L].page;
}
int main(){
    cin>>N;
    for(int i=1;i<=N;i++)
    {
        cin>>a[i].s>>a[i].page;
    }
    sort(a+1,a+N+1,cmp);
    cin>>q;
    for(int i=1;i<=q;i++)
    {
        string r;
        cin>>r;
        cout<<find(r)<<endl;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪子小院

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值