**There is a structure in my program**
#include<bits/stdc++.h>
using namespace std;
#define N 1000005
#define MAX 1e18
// Vector to store powers greater than 3
vector<long long int> powers;
// vector to store perfect squares
vector<long long int> squares;
void computation()
{
unordered_map<long long int,long long int> mp;
unordered_map<long long int,long long int> ms;
squares.push_back(1);
ms[1]=1;
for (long long int i = 2; i <N; i++)
{
// pushing squares
squares.push_back(i * i);
ms[i*i]=1;
if (ms[i]==1)
continue;
long long int temp = i;
// run loop until some
// power of current number
// doesn't exceed MAX
while (i * i <= MAX / temp)
{
temp *= (i * i);
if(mp[temp]==0){
powers.push_back(temp);
mp[temp]=1;
}
}
}
sort(powers.begin(),powers.end());
sort(squares.begin(),squares.end());
}
в основной функции после вызова функции вычисления любая операция выдает ошибку sig
int main(){
computation();
return 0;
}
Как правильно переписать это с использованием карты? Извините, если бы этот вопрос уже задавался, я не мог понять, просматривая их.