///TRAN THAI BAO :3
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
typedef vector<long long> vi;
typedef pair<long long, long long> pii;
#define maxN 1000007
int n, k;
vector<vi>u;
vector<vi>r;
long long q[maxN] = {0};
bool used[maxN] = {false};
pii ur3[maxN];
void readData()
{
cin >> n >> k;
vi emp;
for(int i = 0; i <= k; i++)
emp.push_back(0);
for(int i = 0; i <= n; i++)
{
u.push_back(emp);
r.push_back(emp);
}
for(int i = 1; i <= n; i++)
for(int j = 1; j <= k; j++)
cin >> r[i][j];
for(int i = 1; i <= n; i++)
for(int j = 1; j <= k; j++)
cin >> u[i][j];
}
bool checkCourse(int x)
{
int ans = 0;
for(int i = 1; i <= k; i++)
if(q[i] >= r[x][i])
ans++;
return ans==k;
}
void sub1()
{
readData();
if(checkCourse(1))
{
cout << 1;
return;
}
cout << 0;
}
void sub2()
{
readData();
int nxt = 1, ans = 0;
while(nxt != -1)
{
nxt = -1;
for(int i = 1; i <= n; i++)
{
if(used[i])
continue;
if(checkCourse(i))
{
nxt = i;
break;
}
}
if(nxt != -1)
{
used[nxt] = true;
for(int i = 1; i <= k; i++)
q[i] += u[nxt][i];
ans++;
}
}
cout << ans;
}
void sub3()
{
cin >> n >> k;
for(int i = 1; i <= n; i++)
cin >> ur3[i].first;
for(int i = 1; i <= n; i++)
cin >> ur3[i].second;
sort(ur3+1, ur3+n+1);
long long curQ = 0;
int ans = 0;
for(int i = 1; i <= n; i++)
{
if(ur3[i].first <= curQ)
{
ans++;
curQ += ur3[i].second;
}
else break;
}
cout << ans;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
if(n == 1)
sub1();
else if(k == 1)
sub3();
else sub2();
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... |