Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Суть задачи сводится к поиску элемента массива, и печати его индекса.
- // Слева от искомого элемента, сумма всех элементов должна быть ровна
- // сумме всех элементов, расположенных справа.
- // Например, в массиве: 1, 2, 0, 3 таким элементом будет 0, а его индекс 2 надо напечатать в качестве ответа.
- #include <iostream>
- #include <vector>
- using namespace std;
- // "= 1" в режиме TEST.
- int debugging = 0; // "= 0" в режиме автоматизированной проверки.
- // Функция для поиска индекса числа в массиве, слева от которого сумма
- // элементов равна сумме элементов, стоящих справа от него
- ///////////////////////////////////////////////////////////
- int findIndex(const vector<int>& arr) // Функция принимает ссылку на массив arr.
- {
- int leftSum = 0, // Храним здесь сумму чисел до исследуемого числа
- rightSum = 0; // ... сумма после (справа) от исследуемого числа
- // Считаем сумму всех чисел. Они будут суммой справа.
- for(int i = 0; i < arr.size(); ++i) rightSum += arr[i]; if(debugging) cout << "right = "<< rightSum << endl;
- for(int i = 0; i < arr.size(); ++i) // Запускаем цикл для поиска числа, по отношеению к которому
- { // сумма всех элементов расположенных слева и справа =
- // между собой.
- if(i!=0) leftSum += arr[i-1];
- rightSum -= arr[i ];
- if(debugging) cout << "i = "<< i << ", rightSum = " << rightSum << ", leftSum = " << leftSum << endl;
- if(leftSum == rightSum) return i; // Такой элемент в массиве найден!
- }
- return -1; // Элемент такой во всём массиве не найден.
- }
- int init(vector<int> &arr); // Прототип функциии init()
- ////////////////////////////////////////////////////////////
- int main()
- {
- int N = 4;
- // int nArr[8000000];
- if(debugging == 0) cin >> N; // Если авто-проверка, то ожидаем ввод из потока
- vector<int> arr(N); // Создаём динамический массив (вектор) arr
- if(debugging) init(arr);
- else
- for(int i = 0; i < N; ++i)
- {
- cin >> arr[i]; // Если авто-проверка, то ожидаем ввод из потока
- }
- cout << findIndex(arr); // Вызываем функцию, которая вернёт индекс элемента массива,
- // либо вернёт -1, если не найдёт подходящий элемент.
- return 0;
- }
- // Для тестирования ТОЛЬКО
- // Функция нужна, чтобы в процессе отладки решения, каждый раз не вводить с клавиатуры одни и те же числа.
- ////////////////////////////////////////////////////////////
- int init(vector<int> &arr) // Функция принимает ссылку на массив arr.
- {
- //int nArr[99] = {1, 0, -1, 2};
- int nArr[99] = {2, 7, 1, -8};
- for(int i = 0; i < arr.size(); ++i)
- {
- arr[i] = nArr[i];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement