【C++】OJ103

#include<iostream>
#include<vector>
#include<algorithm>
#include<iterator>
using namespace std;
const int size = 10;
class group{
public:
	int row;
	int rank;
	int size;
	int number;
    int m[10];
	bool operator<=(group &v);
	bool operator>(group &v);
	void sort();
};
bool group::operator<=(group &v){
    for(int j = 0;j<rank;j++){
		if(m[j]>v.m[j])
			return false;
		}
	return true;
}
bool group::operator>(group &v){
    for(int j = 0;j<rank;j++){
		if(m[j]<=v.m[j])
			return false;
		}
	return true;
}
void group::sort(){
	for(int i = 0;i<rank;i++){
		for(int j = i;j<rank;j++){
			if(m[i]>m[j]){
				int temp = m[i];
				m[i] = m[j];
				m[j] = temp;
			}
		}
	}
}
bool sm(group &v,const group &u){
	int z = 0;
    if(v.m[z]>u.m[z])
		return false;
	else{
		while(v.m[z]==u.m[z]){
			z++;
		}
		if(v.m[z]>u.m[z])
			return false;
		else 
		    return true;
	}
}
int main(){
	int a,b;
	cin >> a;
	cin >> b;
	group c[10];
	vector<group> d;
	for(int k = 0;k<a;k++){
		c[k].row = a;
		c[k].rank = b;
	}
	for(int i = 0;i<a;i++){
		for(int j = 0;j<b;j++)
		    cin >> c[i].m[j];
		c[i].number = i+1;
	}
	for(int k = 0;k<a;k++){
		c[k].sort();
		d.push_back(c[k]);
	}
	sort(d.begin(),d.end(),sm);
	int u[10];
	int f[10][10];
	int max = 0;
	int sign = 0;
	for(int t = 0;t<a;t++){
		int n = 0;
		int z = t+1;
		int i = t;
		f[t][n] = d[t].number;
	    while(z<a){
	        while(z<a&&d[i]<=d[z]){
				f[t][n+1] = d[z].number;
			    i++;
			    z++;
				n++;
	        }
			if(z<a){
		        z++;
			}
	    }
		if(z>1&&d[a-2]<=d[a-1]&&f[t][i-1]==d[a-2].number){
			f[t][n+1] = d[a-1].number;
			n++;
		}
		u[t] = n;
		if(u[t]>max){
			max = u[t];
			sign = t;
		}
	}
	cout << max<<" ";
	cout << endl;
    for(int j = 0;j<max;j++){
	    cout << f[sign][j]<<" ";
	}
	cout << endl;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值