#include <bits/stdc++.h>
using namespace std;
#define int long long
#define OYY LLONG_MAX
#define faster ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define fi first
#define se second
#define FOR for(int i=1;i<=n;i++)
#define mid (start+end)/2
#define pb push_back
#define lim 1000005
const int mod=1000000007;
vector<pair<int,int>> v[lim];
int n,k;
int arr1[lim],cost[lim],cur_cost[lim],cur_point[lim],kim[lim];
inline int ind(int x,int y){
return (x-1)*k+y;
}
int32_t main(){
faster
cin>>n>>k;
FOR{
for(int j=1;j<=k;j++){
cin>>arr1[ind(i,j)];
v[j].pb({arr1[ind(i,j)],i});
}
}
FOR{
for(int j=1;j<=k;j++){
cin>>cost[ind(i,j)];
}
}
for(int i=1;i<=k;i++){
sort(v[i].begin(),v[i].end());
}
int cev=0;
while(true){
vector<int> yeni;
for(int i=1;i<=k;i++){
while(cur_point[i]<n && v[i][cur_point[i]].fi<=cur_cost[i]){
//cout<<i<<" "<<cur_point[i]<<" "<<v[i][cur_point[i]].fi<<" "<<v[i][cur_point[i]].se<<endl;
kim[v[i][cur_point[i]].se]++;
//cout<<v[i][cur_point[i]].se<<" "<<kim[v[i][cur_point[i]].se]<<endl;
//kim[v[i][cur_point[i]].se]<<endl;
if(kim[v[i][cur_point[i]].se]==k)yeni.pb(v[i][cur_point[i]].se);
cur_point[i]++;
}
}
if(yeni.size()==0)break;
for(auto a:yeni){
for(int i=1;i<=k;i++){
cur_cost[i]+=cost[ind(a,i)];
}
cev++;
}
}
cout<<cev<<'\n';
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... |