用set判断是否出现过这个数字
用map相当于离散化不用开呢莫大数组 map记录呢个数组出现的最后一次的位置
大规模降低时间复杂度
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ios \
ios::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
signed main()
{
ios;
set<int>s;
map<int,int>mp;
int t;
cin>>t;
for(int i=1;i<=t;i++)
{
char op;int x;
cin>>op>>x;
if(op=='+')
{
s.insert(x);
}
else
{
if(!s.count(x))
cout<<x<<endl;
else
{
if(mp[x]==0)
{
int last =x;
for(int i=x;;i+=x)
{
if(!s.count(i))
{
cout<<i<<endl;
break;
}
last=i;
}
mp[x]=last;
}
else
{
int last=mp[x];
for(int i=mp[x];;i+=x)
{
if(!s.count(i))
{
cout<<i<<endl;
break;
}
last=i;
}
mp[x]=last;
}
}
}
}
}