Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- void merge(int s[], int left, int right)
- {
- if (left == right)
- return;
- int middle = (right + left) / 2;
- int i = left;
- int j = middle + 1;
- merge(s, left, middle);
- merge(s, middle + 1, right);
- int tmp[right - left + 1];
- for (int tmpInd = left; tmpInd <= right; ++tmpInd)
- {
- if (i <= middle && (j > right || s[i] <= s[j]))
- {
- tmp[tmpInd - left] = s[i];
- ++i;
- }
- else
- {
- tmp[tmpInd - left] = s[j];
- ++j;
- }
- }
- for (int tmpInd = left; tmpInd <= right; ++tmpInd)
- {
- s[tmpInd] = tmp[tmpInd - left];
- }
- }
- int main() {
- int N, M;
- std::cin >> N >> M;
- int capacity[N * M];
- for (int i = 0; i < N * M; ++i)
- std::cin >> capacity[i];
- merge(capacity, 0, N * M - 1);
- int K;
- std::cin >> K;
- int Mesklinites[K];
- int result = 0;
- for (int i = 0; i < K; ++i)
- std::cin >> Mesklinites[i];
- merge(Mesklinites, 0, K - 1);
- for (int i = 0; i < K; ++i){
- for (int j = 0; j < N * M; ++j){
- if (Mesklinites[i] <= capacity[j]){
- result++;
- capacity[j] = -1;
- break;
- }
- }
- }
- std::cout << result;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment