0

我面临着问题。当我使用向量时,它运行成功,但通过 10/100 并再次部分解决,我尝试将它与 set 一起使用,我得分 30/100。我想知道我应该使用哪种方法来清除这个问题。

我现在应该使用哪种方法我不想要解决方案而是逻辑。达到这个问题我可能会出错。在第一个数组中,我计算了所有爱丽丝号码和其他所有鲍勃号码。然后计算重复的数量并打印出来。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

我写的代码是

#include <bits/stdc++.h>
using namespace std;
int main()
{


    
    int a, b;
    cin>>a>>b;  
    int counter = 0;
    set<int> s1;
    set<int> s2;
    while(a--)
    {
        int f, s;
        cin>>f>>s;
        for(int i = f; i< s; i++)
        {
            s1.insert(i);
            // counter++;
        }
    }

    while(b--)
    {
        int f, s;
        cin>>f>>s;
        for(int i = f; i< s; i++)
        {
            s2.insert(i);
            // counter++;
        }
    }   
    // for (auto it = s1.begin(); it != s1.end(); it++)
 //        cout << *it << " ";

 //    cout<<endl;
 //    for (auto it = s2.begin(); it != s2.end(); it++)
 //        cout << *it << " ";

    // set<int> s(s1);
    // s.insert(s2.begin(), s2.end());

    // for (auto const &e: s) {
    //     std::cout << e << ' ';
    // }

    vector<int> common_data;
    set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end(), std::back_inserter(common_data));
    // cout<<endl;
    for (auto it = common_data.begin(); it != common_data.end(); it++)
        // cout << *it << " ";
        counter++;

    cout<<counter;




    return 0;
}   

4

0 回答 0