2 条题解

  • 0
    @ 2026-8-9 9:30:32
    #include <bits/stdc++.h>
    using namespace std;
    const int N=2e5+10;
    int a[N],b[N];
    multiset<int>q;
    int main()
    {
    	int n,m;cin>>n>>m;
    	for(int i=1;i<=n;i++)cin>>a[i],q.insert(a[i]);
    	for(int i=1;i<=m;i++)cin>>b[i];
    	sort(b+1,b+m+1);
    	long long ans=0;
    	for(int i=1;i<=m;i++)
    	{
    		auto it=q.lower_bound(b[i]);
    		if(it==q.end())return cout<<-1,0;
    		ans+=*it;
    		q.erase(it);
    	}
    	cout<<ans;
    	return 0;
    }
    • 0
      @ 2026-1-6 22:12:15
      #include<bits/stdc++.h>
      using namespace std;
      #define int long long
      const int N=2e5+10;
      int a[N],b[N];
      signed main()
      {
      	int n,m;scanf("%lld%lld",&n,&m);
      	for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
      	for(int i=1;i<=m;i++)scanf("%lld",&b[i]);
      	sort(a+1,a+n+1);
      	sort(b+1,b+m+1);
      	int ans=0,sum=0;
      	for(int i=1,j=1;i<=n;i++)
      		if(b[j]<=a[i]&&j<=m)
      		{
      			ans+=a[i];
      			j++;sum++;
      		}
      	if(sum<m)ans=-1;
      	printf("%lld\n",ans);
      	return 0;
      }
      
      • 1

      信息

      ID
      1622
      时间
      2000ms
      内存
      1024MiB
      难度
      7
      标签
      递交数
      20
      已通过
      9
      上传者