У меня есть проблема с кодом C++.
#include <bits/stdc++.h> #include<iostream> #include <vector> using namespace std; long long int n,q; vector<int>arr; vector<int>ans; int main(){ int i,j; cin>>n; cin>>q; for (int i = 0; i < n; ++i){ cin>>arr[i]; } int pos_val,l,r; for (int j = 0;j < q; ++j){ cin>>pos_val>>l>>r; if (pos_val == 1){ arr[l-1]=r; } else if (pos_val == 2){ vector<int>arr2 = arr; int N = sizeof(arr2) / sizeof(int); ans.push_back(isPossibleTriangle(arr2, N)); } } int p; for (p=0;p<=q;p++){ cout<<ans[p]; } return 0; } int isPossibleTriangle(vector<int>arr, int N){ if (N < 3) return false; int cnt = 0; sort(arr.begin(),arr.end());; for (int i=0; i<N-2; i++){ if (arr[i] + arr[i+1] > arr[i+2]){ if (cnt<(arr[i] + arr[i+1] + arr[i+2])){ cnt += (arr[i] + arr[i+1] + arr[i+2]); } } } return cnt; }
Пример:
Формат ввода:(точка с запятой означает новую строку)
5 4 \n; 3 1 8 9 7 \n; 2 1 5 \n; 1 2 12 \n; 2 1 3 \n; 2 2 5 \n; Output: 24 \n; 0 \n; 29 \n;
Первый запрос просит нас найти максимальный периметр треугольника, используя некоторые из элементов {3, 1, 8, 9, 7}. Мы можем взять элементы 7, 8 и 9 и построить треугольник, используя эти три элемента в качестве длины сторон. Этот треугольник имеет периметр 7 + 8 + 9 = 24, что является максимально возможным периметром. Следовательно, ответ-24.
Второй запрос просит нас изменить второй элемент на 12.
Третий запрос предлагает нам найти максимальный периметр треугольника, используя некоторые из элементов {3, 12, 8}. Эти три элемента не образуют треугольника, поэтому ответ равен 0.
Четвертый запрос просит нас найти максимальный периметр треугольника, используя некоторые из элементов {12, 8, 9, 7}. Мы можем взять элементы 8, 9 и 12 и построить треугольник, используя эти три элемента в качестве длины сторон. Этот треугольник имеет периметр 8 + 9 + 12 = 29, что является максимально возможным. Следовательно, ответ-29.
Что я уже пробовал:
Я программист на python.Я решал вопрос на c++, и у меня возникли проблемы.Пожалуйста, помогите мне.
Patrice T
А какие проблемы вы планируете рассказать?
jeron1
Какие конкретно проблемы у вас возникли? То, что он делает, это не то, что вы ожидаете. Чем больше деталей, тем лучше.
[редактировать]
Взгляд на первые несколько строк показывает,
вектор<int>arr;
вектор<int>ans;
тап_п(){
int i,j;
cin>>n;
cin>>q;
for (int i = 0; i < n; ++i){
cin>>arr[i]; <=======попытка добавить элементы в вектор таким образом не работает, он не определен попробуйте прочитать int, а затем используйте push_back()
}