Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- bool comp(pair<int, vector< int > > a, pair<int, vector< int > > b)
- {
- return (a.second[0] < b.second[0]);
- }
- bool solve(vector<int> a, vector<int> b) {
- for(int i = 0; i < a.size(); i++) {
- if(a[i] < b[i])
- return false;
- }
- return true;
- }
- int main() {
- int k, n;
- while(cin >> k >> n) {
- vector< pair<int, vector< int > > > boxes(k, pair<int, vector< int > >(n, {1,{0}}));
- for(int i = 0; i < k; i++) {
- vector<int> tempV(n, 0);
- for(int j = 0; j < n; j++) {
- int tmp, vol = 1;
- cin >> tmp;
- tempV[j] = tmp;
- }
- sort(tempV.begin(), tempV.end(), greater<int>());
- boxes[i] = {i+1, tempV};
- }
- sort(boxes.begin(), boxes.end(), comp);
- // for(int i = 0; i < k; i++) {
- // cout << boxes[i].first << " = ";
- // for(int j = 0; j < n; j++) {
- // cout << ((boxes[i]).second)[j] << " ";
- // }
- // cout << endl;
- // }
- vector<int> cnt(k, 1);
- vector<int> trace(k);
- int res = INT_MIN;
- for(int i = 0; i < k; i++) {
- trace[i] = i;
- }
- for(int i = 1; i < n; i++) {
- for(int j = 0; j < i; j++) {
- if(solve(boxes[j].second, boxes[i].second)) {
- cnt[i++];
- trace[i] = j;
- }
- }
- }
- for(int i = 0; i < k; i++) {
- res = (res, cnt(i));
- }
- cout << res << endl;
- for(int i = 0; i < k; i++)
- cout << res[i] << " ";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement