对于这行代码,我只知道是优化cin和cout的速度,速度和scanf,printf差不多,但是同一份代码,我只修改了输入输出,c的时间是717ms,c++只要139ms,内存差不多都是15。
如果是用C++万能头,输入输出用scanf和printf也是要800多ms。
题目是codeforces的1679B.
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
```)
```c
#include <stdio.h>
typedef long long ll;
int s[200007],q[200007];
int main()
{
int n,m,i,j,z = -1,d;
ll sum = 0;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&s[i]);
sum += s[i];
}
for(i=1;i<=m;i++)
{
ll a,b,c;
scanf("%lld%lld",&a,&b);
if(a == 1)
{
scanf("%lld",&c);
sum += c - (q[b]>z?s[b]:d);
s[b] = c;
q[b] = i;
}
else
{
d = b;
z = i;
sum = (ll)b*n;
}
printf("%lld\n",sum);
}
return 0;
}
```c++
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+7;
int s[N],q[N];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m,i,j,z = -1,d;
ll sum = 0;
cin >> n >> m;
for(i=1;i<=n;i++)
{
cin >> s[i];
sum += s[i];
}
for(i=1;i<=m;i++)
{
ll a,b,c;
cin >> a >>b;
if(a == 1)
{
cin>>c;
sum += c-(q[b]>z?s[b]:d);
s[b] = c;
q[b] = i;
}
else
{
d = b;
z = i;
sum = (ll)b*n;
}
cout<<sum<<"\n";
}
return 0;
}
```