Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- int main()
- {
- int n = 0;
- std::cin >> n;
- int* a = new int[n * n];
- int* b = new int[n];
- int nn = n * n;
- for (int i = 0; i < n * n; i++) {
- std::cin >> a[i];
- }
- // for (int i = 0; i < n * n; i++) {
- // std::cout << a[i];
- // }
- // for (int i = 0; i < n; i++) {
- // b[i] = 0;
- // for (int j = 0; j < n; j++) {
- // b[i] = b[i] + a[i * n + j];
- // }
- // b[i] = b[i] / n;
- // }
- __asm {
- mov edi, a //; Массив исходный
- mov esi, b //; Массив результатов
- mov ecx, -1 //; счетчик внешнего цикла, j
- xor ebx, ebx //счетчик внутреннего цикла, i
- xor eax, eax
- for:
- inc ecx
- cmp ecx, n //внешний цикл
- jge endfor
- xor ebx, ebx //обнуляем счетчик внутренного цикла
- internalfor :
- cmp ebx, n //идем по строке пока i меньше n
- jge for //возвращаемся во внешний цикл по условию
- mov eax, 0
- mul ecx
- add eax, ebx
- mov edx, a[eax * 4]
- add[esi], edx //кладем в b[j] сумму j - ой строки поэлементно a[j + i]
- add esi, 4
- inc ebx //увеличиваем i
- jmp internalfor //возвращаемся в начало внутренного цикла
- endfor :
- xor ecx, ecx
- mov ebx, n
- almost :
- cmp ecx, n //сравниваем со счетчиком, переходим в конец, если массив всё
- jge end
- mov eax, [esi + ecx * 2] //просто цикл по всем элементам результирующей матрицы
- cdq
- idiv ebx
- inc ecx //эта штука основывается на том, что чисел "2" больше там, где среднее арифметическое больше единицы (а так как один ноль всегда есть и сумма, даже если в строке одни "1", будет отвечать требованиям )
- jmp almost
- end :
- }
- for (int i = 0; i < n; i++) {
- if (b[i] >= 1) {
- std::cout << i + 1;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement