稀疏向量

注意:scanf比cin快,两层循环变换为一层比设条件break快。

#include<iostream>
using namespace std;
const int MAX=500000;
int ind1[MAX],val1[MAX],ind2[MAX],val2[MAX];

int main()
{
    int n,a,b;
    scanf("%d %d %d",&n,&a,&b);

    long long sum=0;
    for(int i=0;i<a;i++)
    {
        scanf("%d %d",&ind1[i],&val1[i]);
    }
    for(int i=0;i<b;i++)
    {
        scanf("%d %d",&ind2[i],&val2[i]);
    }
    int i=0,j=0;
    while(i<a&&j<b)
    {
         if(ind1[i]==ind2[j])
         {
             sum+=(val1[i]*val2[j]);
             i++;
             j++;
         }
         if(ind1[i]<ind2[j])
         {
             i++;
         }
         if(ind1[i]>ind2[j])
         {
             j++;
         }
    }
    cout<<sum<<endl;
    return 0;    
} 

 

posted @ 2020-09-25 10:28  知马力lly  阅读(15)  评论(0编辑  收藏  举报
Document