Codeforces Round #653 (Div. 3) E1. Reading Books (easy version)(思维)
给出 n 本书的阅读时间以及 A,B 是否愿意读,1 表示愿意,0 表示不愿意,A,B 每个人都要看 k 本书,但如果两个人都喜欢看一本书,那么只要有一个人看了,两个人就算都看了,问两人看完所有书花费的最小时间
const int N=2e5+5;
int n,m;
int i,j,k;
int a[N];
vector<int> u,v,w;
int main()
{
while(~sdd(n,k)){
ll ans=0;
forn(i,1,n){
int c,x,y;
sddd(c,x,y);
if(x && y) w.pb(c);
else if(x) u.pb(c);
else if(y) v.pb(c);
}
sort(u.begin(),u.end());
sort(v.begin(),v.end());
sort(w.begin(),w.end());
if(u.size()+w.size()<k ||w.size()+v.size()<k){
pd(-1);
continue;
}
int i=0,j=0,cur=0;
while(k>0){
if(i>=u.size() || j>=v.size() || (cur<w.size() && w[cur]<u[i]+v[j])) cur++,k-=1,ans+=w[cur-1];
else i++,j++,k-=1,ans+=u[i-1]+v[j-1];
}
pll(ans);
}
//PAUSE;
return 0;
}