#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=1e3+9;
int a[N],b[N]={},c[N];
int m,n,k=0,ans=0;
int main()
{
cin>>m>>n;
for(int i=1;i<=m;i++)
{
cin>>a[i];
}//队员能力
sort(a+1,a+1+m,greater<int>());//从大到小排序
while(n--)
{
int temp;cin>>temp;
k=max(temp,k);//记录最大长度
for(int i=1;i<=temp;i++)cin>>b[i];
sort(b+1,b+1+temp,greater<int>());
for(int i=1;i<=temp;i++)c[i]=max(c[i],b[i]);
}//数据整合
//i:冒险者(倒叙),j:村庄(正序)
for(int i=m,j=k;i>=0&&j>0;i--) //注意
{
//1.i>=0:
//i=1,j=6的时候不满足,i--.i==0,此时还能够进入循环从而通过判断输出-1
//2.j>0:
//j=1,满足条件然后-1,j==0退出循环
if(a[i]>=c[j])
{
ans+=a[i];
j--;
}
else if(i<1)// 注意
{
cout<<-1;
return 0;
}
}
cout<<ans<<endl;
return 0;
}
冒险者公会
最新推荐文章于 2025-07-07 12:04:47 发布