Блог пользователя HitmanBBa

Автор HitmanBBa, 10 лет назад, По-английски

Hello everyone.

Today, while I'm trying to solve this easy problem 404A - Валера и X,

I write this code 11264735 using cin.tie(0); and ios_base::sync_with_stdio(0); and I got a wrong answer on test 2, but when I removed them from my code 11264741 I got Accepted, why??

Теги c++
  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

»
10 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

You can't use printf/scanf once you write ios_base::sync_with_stdio(0)

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Can you explain, please :)

    • »
      »
      »
      10 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

      ios_base::sync_with_stdio(0) will de-synchronize cin from scanf and cout from printf. This is fine and will result in a speedup if you just use cin and cout, but if you mix that with stdio-style IO, then weird things happen. For example if the input is 5 6 and your code says

      int a, b;
      scanf("%d", &a);
      cin >> b;
      

      You might get a=6, b=5 or something like that. Similarly,

      printf("%s", "YES");
      cout << "NO";
      

      might result in "NOYES" instead of "YESNO". At least that's my understanding of it.