#include <bits/stdc++.h>
#define MOD 1000000007
using namespace std;
typedef long long ll;
typedef pair<ll, ll> ii;
const int N = 200005;
const int BL = 325;
ll n, k;
void solve()
{
cin >> n >> k;
vector<ll> Sat(n + 2, 0), Pos(k + 2, -1), cur;
vector<vector<int>> p(n + 2, vector<int>(k + 2));
vector<vector<pair<int, int>>> vec(k + 2);
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= k; j++)
{
int x;
cin >> x;
vec[j].push_back({x, i});
}
}
for (int i = 1; i <= k; i++)
{
cur.push_back(0);
sort(vec[i].begin(), vec[i].end());
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= k; j++)
{
cin >> p[i][j];
}
}
int dem = 0;
while (1)
{
bool used = 0;
for (int i = 1; i <= k; i++)
{
while (Pos[i] + 1 < n && vec[i][Pos[i] + 1].first <= cur[i - 1])
{
Sat[vec[i][Pos[i] + 1].second]++;
used = 1;
if (Sat[vec[i][Pos[i] + 1].second] == k)
{
for (int j = 1; j <= k; j++)
cur[j - 1] += p[vec[i][Pos[i] + 1].second][j];
dem++;
}
Pos[i]++;
}
}
if (!used)
break;
}
cout << dem;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
solve();
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |