B. Stone Age Problem
题目大意:
两种操作
题目做法:
普通模拟
AC代码:
#include<bits/stdc++.h>
#define pb(element) push_back(element)
#define fast ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define int long long
//#define ll long long
//Cara's templet version 1.19
//2024/2/20 20:32 UTC+8
//Blood Toil Tears Sweat
using namespace std;
const int maxn=1e6+10;
void solve()
{
int n,q,sum=0;
cin>>n>>q;
int ar[n],now=-1;
map<int,bool> mm;
for(int i=0;i<n;i++) cin>>ar[i],sum+=ar[i];
while(q--)
{
int op;
cin>>op;
if(op==1)
{
int ps,x;
cin>>ps>>x;
if(now==-1)
{
sum+=x-ar[ps-1];
ar[ps-1]=x;
}
else
{
if(mm[ps-1]==0)
{
sum+=x-now;
mm[ps-1]=1;
ar[ps-1]=x;
}
else
{
sum+=x-ar[ps-1];
ar[ps-1]=x;
}
}
}
else
{
int x;
cin>>x;
now=x;
mm.clear();
sum=n*x;
}
cout<<sum<<'\n';
}
}
signed main()
{
fast int casen=1;
//cin>>casen;
while(casen--) solve();
}