Submission #1175279

#TimeUsernameProblemLanguageResultExecution timeMemory
1175279elotelo966Topical (NOI23_topical)C++20
100 / 100
277 ms86548 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...