题目链接:
思路:
只要考虑最值+排序就好了。
代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 3e5+10;
int a[N],b[N];
#define P pair <int,int>
vector <pair <int,int> > vc[2];
int main(void)
{
int n,x,y,t1 = 0,t2 = 0;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d",&a[i],&b[i]);
if(a[i] > b[i]) vc[0].push_back(P(a[i],i)),t1++;
else vc[1].push_back(P(b[i],i)),t2++;
}
printf("%d\n",max(t1,t2));
if(t1 >= t2)
{
sort(vc[0].begin(),vc[0].end());
for(int i=0;i<t1;i++){
if(i!=0) printf(" ");
printf("%d",vc[0][i].second);
}
}
else{
sort(vc[1].begin(),vc[1].end());
for(int i=t2-1;i>=0;i--){
if(i!=t2-1) printf(" ");
printf("%d",vc[1][i].second);
}
}
return 0;
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- hzar.cn 版权所有 赣ICP备2024042791号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务