http://codeforces.me/contest/484/submission/8617714
http://codeforces.me/contest/484/submission/8617627
различие этих решений только в выводе и вводе
Поясните что здесь не так?
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 164 |
1 | maomao90 | 164 |
3 | Um_nik | 163 |
4 | atcoder_official | 160 |
4 | adamant | 160 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
8 | Dominater069 | 154 |
8 | nor | 154 |
http://codeforces.me/contest/484/submission/8617714
http://codeforces.me/contest/484/submission/8617627
различие этих решений только в выводе и вводе
Поясните что здесь не так?
Название |
---|
Кажется getline(cin, s) работает долго без ios_base::sync_with_stdio(false)
Я вот поменял только вывод и получил AC 700мс.
http://codeforces.me/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.me/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.me/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 эти строчки ничего не делают, поэтому пользующимся этой средой локально сие явление незаметно.