http://codeforces.net/contest/484/submission/8617714
http://codeforces.net/contest/484/submission/8617627
различие этих решений только в выводе и вводе
Поясните что здесь не так?
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3839 |
3 | Radewoosh | 3646 |
4 | jqdai0815 | 3620 |
4 | Benq | 3620 |
6 | orzdevinwang | 3612 |
7 | Geothermal | 3569 |
7 | cnnfls_csy | 3569 |
9 | ecnerwala | 3494 |
10 | Um_nik | 3396 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | Um_nik | 164 |
2 | maomao90 | 160 |
3 | -is-this-fft- | 159 |
4 | atcoder_official | 158 |
4 | cry | 158 |
4 | awoo | 158 |
7 | adamant | 155 |
8 | nor | 154 |
9 | TheScrasse | 153 |
10 | maroonrk | 152 |
http://codeforces.net/contest/484/submission/8617714
http://codeforces.net/contest/484/submission/8617627
различие этих решений только в выводе и вводе
Поясните что здесь не так?
Название |
---|
Кажется getline(cin, s) работает долго без ios_base::sync_with_stdio(false)
Я вот поменял только вывод и получил AC 700мс.
http://codeforces.net/contest/484/submission/8617808
Да и я вообще не понимаю вашего коммента. Вроде как как раз без ios_base::sync_with_stdio(false), но с getline(cin, s) получается AC.
getline (cin, s) без ios_base::sync_with_stdio(false) есть только в коде который получает AC. Так что он никак не влияет
ой, точно. Я перепутал посылки. Теперь я сам не понимаю что здесь не так
Кстати, а зачем выводить строку вот таким циклом? :)
У меня был сабмит и с нормальным выводом строки.
Он тоже не проходил по тл.
Это сделано, для того чтобы никто не придирался к фразе
"различие этих решений только в выводе и вводе"
Есть подозрение, что просто всякий раз при чередовании cin-cout потоки синхронизируются, дабы данные например в консоли выглядели естественно, поэтому вот такой код работает за меньше чем 600мс.
http://codeforces.net/contest/484/submission/8617887
UPD. Хоть я понимал sync_with_stdio(false) как раз как отключение синхронизации потоков для cin-cout. Если кто-то разъяснит, будет здорово! :)
Понял. Спасибо!
Ещё эту проблему можно решить добавлением строки cin.tie(0); Это отключает синхронизацию потоков.
sync_with_stdio(0) отключает синхронизацию iostream и stdio, т.е. cin/cout и scanf/printf.
Потому что нечего слишком части cout флашить.
Решение проблемы — отвязка cin от cout с помощью
cin.tie(0);
.8617989
UPD: MrDindows обогнал)
Same solution got accepted after writing cin.tie(NULL); http://codeforces.net/contest/484/submission/8618056
http://www.quora.com/What-is-use-of-the-statement-ios_base-sync_with_stdio-false-cin-tie-NULL-cout-tie-NULL-What-does-it-do
My advice: When you read many lines of input, always turn synchronization off, if you use streams.
Иногда бывало на контестах, что удаление этих двух заветных строк:
меняло вердикт решения с WA на ACC, при это ввод и вывод осуществлялся через cin и cout. До сих пор не понимаю почему. Наверное это зависит от тестирующих систем и компиляторов.
Пример был бы к стати. Другими словами — есть ли какие-то причины/минусы неиспользовать эти 2 строки в программах СП?
При наличии этих строк нельзя одновременно использовать scanf и cin, printf и cout. Скорее всего, WA был из-за этого.
Anyway, под Visual Studio эти строчки ничего не делают, поэтому пользующимся этой средой локально сие явление незаметно.