c/c++的输入输出优化问题

对于这行代码,我只知道是优化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;
}

```

该回答引用ChatGPT
在 C++ 中,使用 iostream 库(包括 cin 和 cout)进行标准输入和输出时,由于默认情况下与 C 的 stdio 库不同,会对 stdio 进行同步(sync)操作。这意味着 iostream 库将使用 stdio 的缓冲区,这可能会减缓输入输出速度。因此,将 ios::sync_with_stdio(false); 放在代码的开头可以关闭同步,从而提高 iostream 的速度,但也可能会导致 iostream 和 stdio 之间数据不同步的问题。

此外,C++ 的 iostream 库本身就比 C 的 stdio 库稍微慢一些。因此,如果程序的输入输出较为频繁,使用 C 的 stdio 库可能比使用 C++ 的 iostream 库更快一些。

此外,使用 C++ 的万能头(#include <bits/stdc++.h>)也可能会导致程序运行速度变慢,因为这个头文件包含了许多库文件,导致编译器需要处理更多的代码,从而增加编译时间和执行时间。因此,最好只包含需要的库头文件。