Problem p01314 (C++) — buggy submission, verdict: Runtime Error

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <sstream>
#include <string>
#include <vector>
using namespace std;

int main() {

  int n;
  while (cin >> n) {
    if (n == 0)
      break;
    int l = 1;
    int r = 1;

    int sum = 0;
    int cnt = 0;
    while (true) {
      if (r >= n)
        break;

      while (sum > n) {
        sum -= l;
        l++;
        if (sum == n)
          cnt++;
      }

      sum += r;
      r++;
      if (sum == n)
        cnt++;
      // cerr << sum << " " << l << " " << r << endl;
    }
    cout << cnt << endl;
  }

  return 0;
}

// EOF

Error: 0
1 1 2
3 1 3
6 1 4
10 1 5
14 2 6
15 4 7
13 6 8
15 7 9
1 1 2
3 1 3
6 1 4
10 1 5
15 1 6
21 1 7
28 1 8
36 1 9
45 1 10
55 1 11
66 1 12
78 1 13
91 1 14
105 1 15
120 1 16
136 1 17
153 1 18
171 1 19
190 1 20
210 1 21
231 1 22
253 1 23
276 1 24
300 1 25
325 1 26
351 1 27
378 1 28
406 1 29
435 1 30
465 1 31
496 1 32
528 1 33
533 8 34
529 12 35
525 15 36
530 17 37
532 19 38
531 21 39
527 23 40
520 25 41
536 26 42
525 28 43
540 29 44
525 31 45
539 32 46
520 34 47
533 35 48
546 36 49
522 38 50
534 39 51
546 40 52
517 42 53
528 43 54
539 44 55
550 45 56
515 47 57
525 48 58
535 49 59
545 50 60
555 51 61
513 53 62
522 54 63
531 55 64
540 56 65
549 57 66
558 58 67
567 59 68
516 61 69
524 62 70
532 63 71
540 64 72
548 65 73
556 66 74
564 67 75
572 68 76
511 70 77
518 71 78
525 72 79
532 73 80
539 74 81
546 75 82
553 76 83
560 77 84
567 78 85
574 79 86
581 80 87
507 82 88
513 83 89
519 84 90
525 85 91
531 86 92
537 87 93
543 88 94
549 89 95
555 90 96
561 91 97
567 92 98
573 93 99
579 94 100
585 95 101
591 96 102
597 97 103
603 98 104
510 100 105
515 101 106
520 102 107
525 103 108
530 104 109
535 105 110
540 106 111
545 107 112
550 108 113
555 109 114
560 110 115
565 111 116
570 112 117
575 113 118
580 114 119
585 115 120
590 116 121
595 117 122
600 118 123
605 119 124
610 120 125
615 121 126
620 122 127
625 123 128
506 125 129
510 126 130
514 127 131
518 128 132
522 129 133
526 130 134
530 131 135
534 132 136
538 133 137
542 134 138
546 135 139
550 136 140
554 137 141
558 138 142
562 139 143
566 140 144
570 141 145
574 142 146
578 143 147
582 144 148
586 145 149
590 146 150
594 147 151
598 148 152
602 149 153
606 150 154
610 151 155
614 152 156
618 153 157
622 154 158
626 155 159
630 156 160
634 157 161
638 158 162
642 159 163
646 160 164
650 161 165
654 162 166
658 163 167
662 164 168
666 165 169
504 167 170
507 168 171
510 169 172
513 170 173
516 171 174
519 172 175
522 173 176
525 174 177
528 175 178
531 176 179
534 177 180
537 178 181
540 179 182
543 180 183
546 181 184
549 182 185
552 183 186
555 184 187
558 185 188
561 186 189
564 187 190
567 188 191
570 189 192
573 190 193
576 191 194
579 192 195
582 193 196
585 194 197
588 195 198
591 196 199
594 197 200
597 198 201
600 199 202
603 200 203
606 201 204
609 202 205
612 203 206
615 204 207
618 205 208
621 206 209
624 207 210
627 208 211
630 209 212
633 210 213
636 211 214
639 212 215
642 213 216
645 214 217
648 215 218
651 216 219
654 217 220
657 218 221
660 219 222
663 220 223
666 221 224
669 222 225
672 223 226
675 224 227
678 225 228
681 226 229
684 227 230
687 228 231
690 229 232
693 230 233
696 231 234
699 232 235
702 233 236
705 234 237
708 235 238
711 236 239
714 237 240
717 238 241
720 239 242
723 240 243
726 241 244
729 242 245
732 243 246
735 244 247
738 245 248
741 246 249
744 247 250
747 248 251
750 249 252
503 251 253
505 252 254
507 253 255
509 254 256
511 255 257
513 256 258
515 257 259
517 258 260
519 259 261
521 260 262
523 261 263
525 262 264
527 263 265
529 264 266
531 265 267
533 266 268
535 267 269
537 268 270
539 269 271
541 270 272
543 271 273
545 272 274
547 273 275
549 274 276
551 275 277
553 276 278
555 277 279
557 278 280
559 279 281
561 280 282
563 281 283
565 282 284
567 283 285
569 284 286
571 285 287
573 286 288
575 287 289
577 288 290
579 289 291
581 290 292
583 291 293
585 292 294
587 293 295
589 294 296
591 295 297
593 296 298
595 297 299
597 298 300
599 299 301
601 300 302
603 301 303
605 302 304
607 303 305
609 304 306
611 305 307
613 306 308
615 307 309
617 308 310
619 309 311
621 310 312
623 311 313
625 312 314
627 313 315
629 314 316
631 315 317
633 316 318
635 317 319
637 318 320
639 319 321
641 320 322
643 321 323
645 322 324
647 323 325
649 324 326
651 325 327
653 326 328
655 327 329
657 328 330
659 329 331
661 330 332
663 331 333
665 332 334
667 333 335
669 334 336
671 335 337
673 336 338
675 337 339
677 338 340
679 339 341
681 340 342
683 341 343
685 342 344
687 343 345
689 344 346
691 345 347
693 346 348
695 347 349
697 348 350
699 349 351
701 350 352
703 351 353
705 352 354
707 353 355
709 354 356
711 355 357
713 356 358
715 357 359
717 358 360
719 359 361
721 360 362
723 361 363
725 362 364
727 363 365
729 364 366
731 365 367
733 366 368
735 367 369
737 368 370
739 369 371
741 370 372
743 371 373
745 372 374
747 373 375
749 374 376
751 375 377
753 376 378
755 377 379
757 378 380
759 379 381
761 380 382
763 381 383
765 382 384
767 383 385
769 384 386
771 385 387
773 386 388
775 387 389
777 388 390
779 389 391
781 390 392
783 391 393
785 392 394
787 393 395
789 394 396
791 395 397
793 396 398
795 397 399
797 398 400
799 399 401
801 400 402
803 401 403
805 402 404
807 403 405
809 404 406
811 405 407
813 406 408
815 407 409
817 408 410
819 409 411
821 410 412
823 411 413
825 412 414
827 413 415
829 414 416
831 415 417
833 416 418
835 417 419
837 418 420
839 419 421
841 420 422
843 421 423
845 422 424
847 423 425
849 424 426
851 425 427
853 426 428
855 427 429
857 428 430
859 429 431
861 430 432
863 431 433
865 432 434
867 433 435
869 434 436
871 435 437
873 436 438
875 437 439
877 438 440
879 439 441
881 440 442
883 441 443
885 442 444
887 443 445
889 444 446
891 445 447
893 446 448
895 447 449
897 448 450
899 449 451
901 450 452
903 451 453
905 452 454
907 453 455
909 454 456
911 455 457
913 456 458
915 457 459
917 458 460
919 459 461
921 460 462
923 461 463
925 462 464
927 463 465
929 464 466
931 465 467
933 466 468
935 467 469
937 468 470
939 469 471
941 470 472
943 471 473
945 472 474
947 473 475
949 474 476
951 475 477
953 476 478
955 477 479
957 478 480
959 479 481
961 480 482
963 481 483
965 482 484
967 483 485
969 484 486
971 485 487
973 486 488
975 487 489
977 488 490
979 489 491
981 490 492
983 491 493
985 492 494
987 493 495
989 494 496
991 495 497
993 496 498
995 497 499
997 498 500


Fixed submission:

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <sstream>
#include <string>
#include <vector>
using namespace std;

int main() {

  int n;
  while (cin >> n) {
    if (n == 0)
      break;
    int l = 1;
    int r = 1;

    int sum = 0;
    int cnt = 0;
    while (true) {
      if (r >= n)
        break;

      while (sum > n) {
        sum -= l;
        l++;
        if (sum == n)
          cnt++;
      }

      sum += r;
      r++;
      if (sum == n)
        cnt++;
      cerr << sum << " " << l << " " << r << endl;
    }
    cout << cnt << endl;
  }

  return 0;
}

// EOF