CCF - 202006 - 2 - 희소 벡터

제목:http://118.190.20.162/view.page?gpid=T104 1.60 분 운행 시간 초과
#include 
using namespace std;
int main()
{
     
    int n,a,b;
    cin>>n>>a>>b;
    map<int,int>u;
    int index,value;
    for(int i=0;i<a;i++)
    {
     
        cin>>index>>value;
        u[index]=value;
    }
    long long res=0;
    for(int i=0;i<b;i++)
    {
     
        cin>>index>>value;
        if(u[index])
            res+=value*u[index];
    }
    cout<<res;

    return 0;
}



2.100 만점
#include 
using namespace std;
int main()
{
     
    ios::sync_with_stdio(false);
    int n,a,b;
    cin>>n>>a>>b;
    map<int,int>u;
    int index,value;
    for(int i=0;i<a;i++)
    {
     
        cin>>index>>value;
        u[index]=value;
    }
    long long res=0;
    for(int i=0;i<b;i++)
    {
     
        cin>>index>>value;
        if(u[index])
            res+=value*u[index];
    }
    cout<<res;

    return 0;
}



2.100 만점
#include 
using namespace std;
int main()
{
     
    int n,a,b;
    scanf("%d %d %d",&n,&a,&b);
    //cin>>n>>a>>b;
    vector<pair<int,int>>u;
    int index,value;
    for(int i=0;i<a;i++)
    {
     
        //cin>>index>>value;
        scanf("%d %d",&index,&value);
        u.push_back({
     index,value});

    }
    long long res=0;
    int j=0;
    for(int i=0;i<b;i++)
    {
     
        scanf("%d %d",&index,&value);
        while(j<a)
        {
     
            if(index<u[j].first)
                break;
            else if(index>u[j].first)
                j++;
            else
            {
     
                res+=value*u[j].second;
                j++;
            }


        }

    }
    printf("%lld",res);

    return 0;
}



입력 출력 cin, cout 90 점, 시간 초과

좋은 웹페이지 즐겨찾기