事件推送

标题:事件推送 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
同一个数轴X上有两个点的集合A={A1, A2, …, Am}和B={B1, B2, …, Bn},Ai和Bj均为正整数,A、B已经按照从小到大排好序,A、B均不为空,给定一个距离R(正整数),列出同时满足如下条件的所有(Ai, Bj)数对: 
1)Ai <= B  
2)Ai, Bj之间的距离小于等于R
3)在满足1)2)的情况下,每个Ai只需输出距离最近的Bj
4)输出结果按Ai从小到大的顺序排序



#include <vector>
#include <utility>
#include <string>
#include <iostream>
using namespace std;

int main()
{
    long long m,n,R;
    cin >> m >> n >> R;
    vector<long long >A_array(m,0);
    vector<long long >B_array(n,0);
    for (long long i = 0; i<m; i++)
    {
        cin >> A_array[i];
    }
    for (long long i = 0; i<n; i++)
    {
        cin >> B_array[i];
    }
    
    long long int_a = 0;
    long long int_b = 0;
    
    vector<pair<long long , long long >> ans;
    while(int_a < m && int_b < n){
        if(A_array[int_a] <= B_array[int_b]){
            if(B_array[int_b] - A_array[int_a] <= R){
                ans.emplace_back(A_array[int_a], B_array[int_b]);
            }
            int_a = int_a + 1;
        } else{
            int_b = int_b + 1;
        }
    }
    for(int i = 0; i < ans.size(); i++){
        printf("%lld %lld\n", ans[i].first, ans[i].second);
    }
}


全部评论

相关推荐

点赞 评论 收藏
分享
03-26 13:04
已编辑
电子科技大学 算法工程师
xiaowl:你这个简历“条目上”都比较有深度性,但是实际上面试官又没法很好的评估你是怎么达到很多看上去很厉害的结果的。要避免一些看上去很厉害的包装,比如高效的内存复用策略的表达,如果仅是简单的一些内存共享机制,而且面试上也没有深挖的空间,就不要这样表达。比如,工程化模式本质上可能就是定义了一些abstract class,那也就没特别多值得讲的内容。建议简历上应该侧重那些你花了大量时间和精力解决、研究的问题,不要过分追求“丰富”,而是关注在技术深入度、问题解决能力的表现上。
没有实习经历,还有机会进...
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务