Submission details
Task:Platformer
Sender:Przemyslaw Uznanski
Submission time:2015-09-16 17:55:17 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.06 sdetails
#2ACCEPTED0.07 sdetails
#3ACCEPTED0.07 sdetails
#4ACCEPTED0.07 sdetails
#5ACCEPTED0.07 sdetails
#6ACCEPTED0.07 sdetails
#7ACCEPTED0.06 sdetails
#8ACCEPTED0.06 sdetails
#9ACCEPTED0.06 sdetails
#10ACCEPTED0.06 sdetails
#11ACCEPTED0.07 sdetails
#12ACCEPTED0.07 sdetails
#13ACCEPTED0.07 sdetails
#14ACCEPTED0.07 sdetails
#15ACCEPTED0.07 sdetails
#16ACCEPTED0.07 sdetails
#17ACCEPTED0.05 sdetails
#18ACCEPTED0.08 sdetails
#19ACCEPTED0.06 sdetails
#20ACCEPTED0.07 sdetails
#21ACCEPTED0.06 sdetails
#22ACCEPTED0.06 sdetails
#23ACCEPTED0.07 sdetails
#24ACCEPTED0.06 sdetails
#25ACCEPTED0.05 sdetails
#26ACCEPTED0.07 sdetails
#27ACCEPTED0.06 sdetails
#28ACCEPTED0.06 sdetails
#29ACCEPTED0.07 sdetails
#30ACCEPTED0.07 sdetails
#31ACCEPTED0.06 sdetails
#32ACCEPTED0.09 sdetails
#33ACCEPTED0.09 sdetails
#34ACCEPTED0.08 sdetails
#35ACCEPTED0.10 sdetails
#36ACCEPTED0.08 sdetails
#37ACCEPTED0.09 sdetails
#38ACCEPTED0.09 sdetails
#39ACCEPTED0.09 sdetails
#40ACCEPTED0.10 sdetails
#41ACCEPTED0.10 sdetails
#42ACCEPTED0.08 sdetails
#43ACCEPTED0.09 sdetails
#44ACCEPTED0.08 sdetails
#45ACCEPTED0.10 sdetails
#46ACCEPTED0.11 sdetails
#47ACCEPTED0.09 sdetails
#48ACCEPTED0.09 sdetails
#49ACCEPTED0.08 sdetails
#50ACCEPTED0.08 sdetails
#51ACCEPTED0.09 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:23:34: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d%d%d",&n,&q,&w,&k);
                                  ^
input/code.cpp:34:23: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&t);
                       ^
input/code.cpp:39:28: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d",&x,&e);
                            ^

Code

#include <cstdio>
#include <queue>
#include <algorithm>
#include <vector>
#include <set>
#include <cstdlib>

#define all(x) (x).begin(),x.end()

#define pb push_back
#define mp make_pair
#define x1 first
#define x2 second.first
#define x3 second.second
#define trip(a,b,c) mp(a,mp(b,c))

using namespace std;
const int inf = 1000000007;

int main()
{
    int n,q,w,k;
    scanf("%d%d%d%d",&n,&q,&w,&k);

    set<pair<int,int> > S;
    S.insert(mp(q,w));

    int mycost = -k;
    for(int i=0;i<n;i++)
    {
        mycost += k;
//        printf("%d cost = %d\n",i,mycost);
        int t;
        scanf("%d",&t);
        if(t==0)
            continue;

        int x,e;
        scanf("%d%d",&x,&e);
        set<pair<int,int> >::iterator fff;
        

        int upper=-inf;
        for(;;)
        {
//            puts("a");
            fff = S.lower_bound(mp(x,-inf));
            if(fff==S.end())
                break;
            if(fff->second - abs(fff->first - x) >= mycost)
            {
                upper = fff->second - abs(fff->first - x);
                break;
            }
            if(fff->second > mycost)
                break;
            S.erase(fff);
        }
        int lower=-inf;
        for(;;)
        {
//            puts("b");
            fff = S.lower_bound(mp(x,-inf));
            if(fff==S.begin())
                break;
            fff--;

            if(fff->second - abs(fff->first - x) >= mycost)
            {
                lower = fff->second - abs(fff->first - x);
                break;
            }
            if(fff->second > mycost)
                break;
            S.erase(fff);
        }
        int tmp = max(lower,upper); 
        if(tmp < 0)
        {
            continue;
        }
        tmp += e;
        
        fff = S.lower_bound(mp(x,-inf));
        if(fff!=S.end() && fff->first == x)
        {
            S.erase(fff);
        }
        S.insert(mp(x,tmp));
        for(;;)
        {
//            puts("c");
            set<pair<int,int> >::iterator ggg;
            ggg = S.find(mp(x,tmp));
            ggg++;
            if(ggg==S.end())
                break;
            if(abs(ggg->first - x) + ggg->second < tmp)
                S.erase(ggg);
            else
                break;
        }
        for(;;)
        {
//            puts("d");
            set<pair<int,int> >::iterator ggg;
            ggg = S.find(mp(x,tmp));
            if(ggg==S.begin())
                break;
            ggg--;
            if(abs(ggg->first - x) + ggg->second < tmp)
                S.erase(ggg);
            else
                break;
        }
//        for(fff=S.begin();fff!=S.end();fff++)
//        {
//            printf("%d %d\n",fff->first, fff->second);
//        }
    }
    for(set<pair<int,int> >::iterator fff=S.begin();fff!=S.end();fff++)
        if(fff->second >= mycost)
        {
            puts("10-4");
            return 0;
        }
    puts("QAQ");
}

Test details

Test 1

Verdict: ACCEPTED

input
93720 39133 271745 8828
0
1 35503 41358
0
0
...

correct output
QAQ

user output
QAQ

Test 2

Verdict: ACCEPTED

input
97192 56015 123131 3873
1 83352 32477
1 94775 7864
0
0
...

correct output
10-4

user output
10-4

Test 3

Verdict: ACCEPTED

input
99108 94600 113316 4855
0
0
0
0
...

correct output
QAQ

user output
QAQ

Test 4

Verdict: ACCEPTED

input
94908 98153 200335 9390
0
1 97222 4762
1 92494 69700
0
...

correct output
10-4

user output
10-4

Test 5

Verdict: ACCEPTED

input
97925 19788 254413 9008
1 50423 68974
0
0
1 90601 12470
...

correct output
QAQ

user output
QAQ

Test 6

Verdict: ACCEPTED

input
90769 94368 226055 9254
1 6188 38889
0
0
1 15760 61611
...

correct output
QAQ

user output
QAQ

Test 7

Verdict: ACCEPTED

input
93010 53265 141409 6629
1 69399 59938
0
0
0
...

correct output
10-4

user output
10-4

Test 8

Verdict: ACCEPTED

input
94604 86622 3197 291
1 33740 246144103
1 14472 413062285
1 21305 728358221
1 97273 666356704
...

correct output
QAQ

user output
QAQ

Test 9

Verdict: ACCEPTED

input
90370 12656 203687 7741
0
1 20615 4965
0
0
...

correct output
10-4

user output
10-4

Test 10

Verdict: ACCEPTED

input
92711 1731 84200 9537
1 22362 44030
0
1 73954 148394
1 58582 92246
...

correct output
10-4

user output
10-4

Test 11

Verdict: ACCEPTED

input
97776 25155 104115 3949
1 68851 39872
1 23281 27180
0
0
...

correct output
QAQ

user output
QAQ

Test 12

Verdict: ACCEPTED

input
94285 13824 213256 6473
1 19089 7129
1 91649 15534
0
1 84631 18708
...

correct output
10-4

user output
10-4

Test 13

Verdict: ACCEPTED

input
97129 78853 3211 934
1 83665 499047841
0
0
0
...

correct output
QAQ

user output
QAQ

Test 14

Verdict: ACCEPTED

input
97992 37208 81257 9418
0
0
1 16726 18007
0
...

correct output
10-4

user output
10-4

Test 15

Verdict: ACCEPTED

input
91420 4824 115989 9403
0
1 77876 68096
1 42186 46525
0
...

correct output
10-4

user output
10-4

Test 16

Verdict: ACCEPTED

input
96179 90979 49680 2890
0
0
0
1 62847 45363
...

correct output
QAQ

user output
QAQ

Test 17

Verdict: ACCEPTED

input
95647 17291 19818 1740
1 61265 234051494
0
0
1 9322 35801
...

correct output
QAQ

user output
QAQ

Test 18

Verdict: ACCEPTED

input
98835 73849 160991 5151
1 3346 15560
1 42345 51204
0
1 71893 3785
...

correct output
10-4

user output
10-4

Test 19

Verdict: ACCEPTED

input
91256 48792 152543 5308
1 99803 46272
0
1 65300 39202
1 83359 39980
...

correct output
QAQ

user output
QAQ

Test 20

Verdict: ACCEPTED

input
98178 44514 183313 7966
0
0
0
0
...

correct output
10-4

user output
10-4

Test 21

Verdict: ACCEPTED

input
90142 20281 154074 8583
0
0
0
1 65682 10123
...

correct output
10-4

user output
10-4

Test 22

Verdict: ACCEPTED

input
99508 50312 28005 1483
1 8698 561100463
1 27518 17753
1 35183 6874
1 51423 709
...

correct output
QAQ

user output
QAQ

Test 23

Verdict: ACCEPTED

input
93572 52286 10683 5994
0
1 44635 143939594
1 98077 274789312
1 29936 101782377
...

correct output
QAQ

user output
QAQ

Test 24

Verdict: ACCEPTED

input
99507 16701 226527 9776
1 6848 34903
0
1 84638 50801
1 91779 82623
...

correct output
10-4

user output
10-4

Test 25

Verdict: ACCEPTED

input
93687 91600 174 117
0
1 72495 527049261
0
1 61437 169018252
...

correct output
QAQ

user output
QAQ

Test 26

Verdict: ACCEPTED

input
92181 11937 165368 5326
1 93556 16607
1 63375 639
0
1 34722 2656
...

correct output
QAQ

user output
QAQ

Test 27

Verdict: ACCEPTED

input
99053 16063 75605 6270
0
0
1 25114 124515
1 7349 30745
...

correct output
10-4

user output
10-4

Test 28

Verdict: ACCEPTED

input
91912 80570 12959 635
0
1 58320 237459984
1 47571 169756497
1 34391 329136180
...

correct output
QAQ

user output
QAQ

Test 29

Verdict: ACCEPTED

input
97096 15695 104773 5067
0
1 57538 26420
1 17419 65054
1 55286 49658
...

correct output
10-4

user output
10-4

Test 30

Verdict: ACCEPTED

input
94271 93605 53716 7282
0
0
0
1 63342 63872
...

correct output
QAQ

user output
QAQ

Test 31

Verdict: ACCEPTED

input
10 48792 152543 5308
0
0
0
0
...

correct output
10-4

user output
10-4

Test 32

Verdict: ACCEPTED

input
97186 68207 36491 1
1 62847 1015
1 10662 424705944
1 63603 31508
1 93933 31123
...

correct output
10-4

user output
10-4

Test 33

Verdict: ACCEPTED

input
98824 51796 60765 1
1 57459 6393
1 81114 11603
0
0
...

correct output
10-4

user output
10-4

Test 34

Verdict: ACCEPTED

input
99707 79141 24396 1
1 15305 787266981
1 40625 325204064
1 71642 27545
1 11143 519121854
...

correct output
10-4

user output
10-4

Test 35

Verdict: ACCEPTED

input
99499 66563 10726 1
0
1 50930 4917259
1 89683 362392181
1 56945 6604
...

correct output
10-4

user output
10-4

Test 36

Verdict: ACCEPTED

input
96474 74211 32506 2
1 23133 265260726
0
1 55091 111891
0
...

correct output
10-4

user output
10-4

Test 37

Verdict: ACCEPTED

input
98892 62723 24829 1
1 91722 519273406
1 37709 465156425
1 94342 847977954
1 58182 9236
...

correct output
10-4

user output
10-4

Test 38

Verdict: ACCEPTED

input
95020 50407 58686 2
1 98541 88094
1 99994 29336
0
1 68064 24948
...

correct output
10-4

user output
10-4

Test 39

Verdict: ACCEPTED

input
99678 16584 44706 1
1 9935 1157
1 61471 809296994
1 25220 24675
1 43197 21080
...

correct output
10-4

user output
10-4

Test 40

Verdict: ACCEPTED

input
97562 3891 116896 2
1 5550 10290
1 3235 2632
1 92484 60120
1 42302 23320
...

correct output
10-4

user output
10-4

Test 41

Verdict: ACCEPTED

input
95382 38603 53680 2
0
1 73212 43790
1 9191 11570
1 15853 77057
...

correct output
10-4

user output
10-4

Test 42

Verdict: ACCEPTED

input
98321 68338 7247 1
0
1 70810 476
1 12697 537286430
0
...

correct output
10-4

user output
10-4

Test 43

Verdict: ACCEPTED

input
96622 16601 3959 1
1 31931 888513681
1 90381 431318803
1 9327 433232402
1 97464 149691554
...

correct output
10-4

user output
10-4

Test 44

Verdict: ACCEPTED

input
98097 3823 31380 1
1 49745 170502842
1 24743 4541
1 37009 145
1 1903 776
...

correct output
10-4

user output
10-4

Test 45

Verdict: ACCEPTED

input
96353 99694 19331 2
1 6141 280627823
1 5938 685091507
0
1 75645 36271308
...

correct output
10-4

user output
10-4

Test 46

Verdict: ACCEPTED

input
96566 6661 63261 1
1 52321 3509
1 28252 1429
0
1 36092 1839
...

correct output
10-4

user output
10-4

Test 47

Verdict: ACCEPTED

input
97998 25315 9841 2
0
1 81801 398177857
0
1 60076 10826582
...

correct output
10-4

user output
10-4

Test 48

Verdict: ACCEPTED

input
98709 93527 29589 1
0
1 40439 472607569
1 24151 449756851
0
...

correct output
10-4

user output
10-4

Test 49

Verdict: ACCEPTED

input
98681 12780 1379 1
0
0
1 52013 938639644
1 5933 109004048
...

correct output
10-4

user output
10-4

Test 50

Verdict: ACCEPTED

input
96889 34349 15648 1
1 41768 2294
1 85676 615774769
1 97093 519801205
0
...

correct output
10-4

user output
10-4

Test 51

Verdict: ACCEPTED

input
95849 18797 40401 1
1 7503 649
0
0
1 56595 347
...

correct output
10-4

user output
10-4