Я работаю над задачей программирования, и когда я печатаю значения, которые обнаруживает моя функция "взорвать", она выводит некоторые странные значения, которые даже не сохраняются в моем векторе, такие как "80" и "112". Кто-нибудь может помочь найти, почему он выводит значения 80 и 112, когда их нет в моем векторе?
Input
6
8
5
6
13
3
4
Я проверил содержимое моего вектора, и они не содержат этих странных значений, которые выводит моя программа.
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>
typedef long long ll;
using namespace std;
ll N, ans=0, cnt=1;
vector<ll> a;
void explode(ll ind, ll rad, ll dir)
{
if (dir==1 && ind!=N-1)
{
ll i = ind+1, explode_count=0;
while (a[i]<=a[ind]+rad) {cnt++; cout << a[i] << "\n"; i++; explode_count++;}
if (explode_count>=1) explode(i-1, rad+1, 1);
}
else if (dir==-1 && ind!=0)
{
ll i = ind-1, explode_count=0;
while (a[i]>=a[ind]-rad) {cnt++; cout << a[i] << "\n"; i--; explode_count++;}
if (explode_count>=1) explode(i+1, rad+1, -1);
}
}
int main()
{
ofstream fout("angry.out");
ifstream fin("angry.in");
fin >> N;
for (ll i = 0; i < N; i++)
{
ll c;
fin >> c;
a.push_back(c);
}
sort(a.begin(), a.end());
for (ll i = 0; i < N; i++)
{
explode(i,1,1);
explode(i,1,-1);
ans=max(ans, cnt);
cnt=1;
}
fout << ans << "\n";
return 0;
}