#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
int main() {
int n,m,k;cin>>n>>m>>k;
vector<int> ktory(n,0);
vector<vector<ull>> ciagi(n);
priority_queue<pair<pair<ull,ull>,int>> pq;
for (int i = 0; i < n; i++) {
vector<ull> li(m);
ull suma = 0;
for (int j = 0; j < m; j++) {
ull x;cin>>x;
suma+=x;
li[j] = x;
}
pq.push({{li[0],suma},i});
ciagi[i] = li;
}
ull S = 0;
for (int i = 0; i < k; i++) {
ull liczba = pq.top().first.first;
ull s_l = pq.top().first.second-liczba;
int rzad = pq.top().second;
//cout<<rzad<<" "<<liczba<<endl;
ktory[rzad] +=1;
pq.pop();
S+=liczba;
if (ktory[rzad] <m) {
pq.push({{ciagi[rzad][ktory[rzad]],s_l},rzad});
}
}
cout<<S;
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <bits/stdc++.h> using namespace std; typedef unsigned long long ull; int main() { int n,m,k;cin>>n>>m>>k; vector<int> ktory(n,0); vector<vector<ull>> ciagi(n); priority_queue<pair<pair<ull,ull>,int>> pq; for (int i = 0; i < n; i++) { vector<ull> li(m); ull suma = 0; for (int j = 0; j < m; j++) { ull x;cin>>x; suma+=x; li[j] = x; } pq.push({{li[0],suma},i}); ciagi[i] = li; } ull S = 0; for (int i = 0; i < k; i++) { ull liczba = pq.top().first.first; ull s_l = pq.top().first.second-liczba; int rzad = pq.top().second; //cout<<rzad<<" "<<liczba<<endl; ktory[rzad] +=1; pq.pop(); S+=liczba; if (ktory[rzad] <m) { pq.push({{ciagi[rzad][ktory[rzad]],s_l},rzad}); } } cout<<S; return 0; } |
English