1.利用下标和值直接定义b[n]数组
2.如果加入有相同的想到b[n]的二维数组
3.很蠢的问题
ans定义的位置不一样因为每次答案都不样啊,仔细分析一下。。。。
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10;
vector<int>b[N];
signed main(){
ios::sync_with_stdio(0);
cout.tie(0);
cin.tie(0);
int x,n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>x;
b[i].push_back(x);
}
int step,op,a1,b1,goal;
cin>>step;
while(step--){
cin>>op;
if(op==0){
cin>>a1>>b1;
b[a1].push_back(b1);
}else{
int ans=1e8;
cin>>goal;
int l=max((int)1,goal-(int)sqrt(n)-1);
int r=min(n,goal+(int)sqrt(n)+1);
for(int i=l;i<=r;i++){
for(int j=0;j<b[i].size();j++){
ans=min(ans,(goal-i)*(goal-i)+b[i][j]);
}
}
cout<<ans<<endl;
}
}
return 0;
}