Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <climits>
- #include <cassert>
- void f(int** arr, int arg, long long& answer, int index, int* size_arr, int* ind) {
- if (index == arg) {
- for (int i = 0; i < arg; ++i) {
- for (int j = i + 1; j < arg; ++j) {
- if (ind[i] == ind[j]) return;
- }
- }
- long long res = 1;
- for (int i = 0; i < arg; ++i) {
- res *= arr[i][ind[i]];
- }
- answer += res;
- return;
- }
- for (int i = 0; i < size_arr[index]; ++i) {
- ind[index] = i;
- f(arr, arg, answer, index + 1, size_arr, ind);
- }
- }
- int main(int arg, char** argv) {
- --arg;
- int* size_arr = new int[arg];
- for (int i = 1; i <= arg; i++) {
- int temp_size = 0;
- int j = 0;
- while (argv[i][j] != '\0') {
- temp_size *= 10;
- temp_size += argv[i][j] - '0';
- ++j;
- }
- size_arr[i - 1] = temp_size;
- }
- int** arr = new int*[arg];
- for (int i = 0; i < arg; i++) {
- arr[i] = new int[size_arr[i]];
- for (int j = 0; j < size_arr[i]; j++) {
- std::cin >> arr[i][j];
- }
- }
- long long answer = 0;
- int* ind = new int[arg];
- f(arr, arg, answer, 0, size_arr, ind);
- std::cout << answer;
- delete[] size_arr;
- for (int i = 0; i < arg; ++i) {
- delete[] arr[i];
- }
- delete[] arr;
- delete[] ind;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement