模拟 读题真的是
#include<bits/stdc++.h>
using namespace std;
vector<pair<int,int> >v1;// Berland
vector<pair<int,int> >v2;// Beuropean
vector<pair<int,int> >v3;// all
vector<pair<int,int> >ans1;
vector<pair<int,int> >ans2;
int n,a,b,t,rem=0;
long long powe=0;
int main(){
//freopen("C://Users//Duhao//Desktop//in.txt","r",stdin);
scanf("%d%d%d",&n,&a,&b);
for(int i=1;i<=n;i++){
scanf("%d",&t);
if(t==1){
scanf("%d",&t);
v1.push_back(make_pair(t,i));
}
else if(t==2){
scanf("%d",&t);
v2.push_back(make_pair(t,i));
}
else {
scanf("%d",&t);
v3.push_back(make_pair(t,i));
}
}
sort(v1.begin(),v1.end());
sort(v2.begin(),v2.end());
sort(v3.begin(),v3.end());
int siz=v1.size();
//cout<<siz<<endl;
if(siz<=a){
rem+=a-siz;
for(int i=0;i<siz;i++){
powe+=v1[i].first;
ans1.push_back(v1[i]);
}
}
else {
for(int i=0;i<a;i++){
powe+=v1[i].first;
ans1.push_back(v1[i]);
}
}
siz=v2.size();
if(siz<=b){
rem+=b-siz;
for(int i=0;i<siz;i++){
powe+=v2[i].first;
ans2.push_back(v2[i]);
}
}
else {
for(int i=0;i<b;i++){
powe+=v2[i].first;
ans2.push_back(v2[i]);
}
}
int all=0;
siz=v3.size();
if(rem>0){
if(siz<=rem){
//cout<<"dsad"<<endl;
int siza=ans1.size(),i=0;
int sizb=ans2.size();
for(i=0;i<siz&&siza<a;i++){
powe+=v3[i].second;
ans1.push_back(v3[i]);
siza++;
all++;
}
for(;i<siz&&sizb<b;i++){
powe+=v3[i].second;
ans2.push_back(v3[i]);
sizb++;
all++;
}
}
else {
int siza=ans1.size(),i=0;
int sizb=ans2.size();
for(i=0;i<rem&&siza<a;i++){
powe+=v3[i].second;
ans1.push_back(v3[i]);
siza++;
all++;
}
for(;i<rem&&sizb<b;i++){
powe+=v3[i].second;
ans2.push_back(v3[i]);
sizb++;
all++;
}
}
}
//cout<<all<<endl;
int siza=ans1.size();
int sizb=ans2.size();
for(int i=all;i<siz;i++){
int minm1=0,wh1=0,minm2=0,wh2=0;
for(int j=0;j<siza;j++){
if(ans1[j].first-v3[i].first>minm1){
minm1=ans1[j].first-v3[i].first;
wh1=j;
}
}
for(int j=0;j<sizb;j++){
if(ans2[j].first-v3[i].first>minm2){
minm2=ans2[j].first-v3[i].first;
wh2=j;
}
}
//cout<<minm1<<" "<<minm2<<endl;
if(minm1>=minm2){
if(minm1>0){
powe-=minm1;
ans1[wh1]=v3[i];
}
}
else if(minm2>=minm1){
if(minm2>0){
powe-=minm2;
ans2[wh2]=v3[i];
}
}
}
cout<<siza+sizb<<" "<<powe<<endl;
for(int i=0;i<siza;i++){
cout<<ans1[i].second<<" "<<i+1<<endl;
}
for(int i=0;i<sizb;i++){
cout<<ans2[i].second<<" "<<i+a+1<<endl;
}
}