QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#121443#1146. Railsomethingnew#30 3ms4340kbC++207.0kb2023-07-08 06:52:532024-07-04 00:30:37

Judging History

你现在查看的是最新测评结果

  • [2024-07-04 00:30:37]
  • 评测
  • 测评结果:30
  • 用时:3ms
  • 内存:4340kb
  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-07-08 06:52:53]
  • 提交

answer

//  ↘ ⬇ ⬇ ⬇ ⬇ ⬇ ↙
//  ➡ @roadfromroi ⬅
//  ↗ ⬆ ⬆ ⬆ ⬆ ⬆ ↖
#include <iostream>
#include "vector"
#include "algorithm"
#include "numeric"
#include "climits"
#include "iomanip"
#include "bitset"
#include "cmath"
#include "map"
#include "deque"
#include <unistd.h>
#include "array"
#include "set"
#define all(x) x.begin(), x.end()
using namespace std;
/* This is sample grader for the contestant getDistance*/
#include "rail.h"
int getdst(int frst, int x, int fromleft, set<pair<int, int>> &lftcnt, set<pair<int, int>> &rgtcnt) {
    if (fromleft) {
        if (frst <= x) {
            return x - frst;
        } else {
            auto it1 = lftcnt.lower_bound({frst, 0});
            if (it1 == lftcnt.end())
                return -1;
            pair<int, int> pos = *it1;
            int res = pos.first - frst;
            auto it2 = rgtcnt.lower_bound({x-1, 100001});
            if (it2 == rgtcnt.begin())
                return -1;
            pair<int, int> pos2 = *(--it2);
            res += pos.first - pos2.first;
            res += x - pos2.first;
            return res;
        }
    } else {
        auto it1 = lftcnt.lower_bound({frst+1, 0});
        if (it1 == lftcnt.end())
            return -1;
        pair<int, int> pos = *it1;
        int res = pos.first - frst + pos.first - x;
        return res;
    }
}
int getdst2(int frst, int x, set<pair<int, int>> &lftcnt, set<pair<int, int>> &rgtcnt) {
    auto it1 = rgtcnt.lower_bound({x+1, 0});
    if (it1 == rgtcnt.begin())
        return -1;
    pair<int, int> pos = *(--it1);
    int res = - pos.first + frst - pos.first + x;
    return res;
}
void findLocation(int n, int first, int location[], int stype[]) {
    location[0] = first;
    stype[0] = 1;
    vector<pair<int, int>> resba;
    for (int i = 1; i < n; ++i) {
        resba.push_back({getDistance(0, i), i});
    }
    sort(all(resba));
    set<pair<int, int>> lftcnt, rgtcnt;
    rgtcnt.insert({first, 0});
    for (auto i : resba) {
        if (lftcnt.empty()) {
            lftcnt.insert({i.first + first, i.second});
            location[i.second] = i.first + first;
            stype[i.second] = 2;
        } else {
            // cout << i.first << ' ' << i.second << '\n';
            //  cout << -v2 + lftcnt.rbegin()->first << '\n';
            int v2 = getDistance(lftcnt.rbegin()->second, i.second);
            int v3 = getDistance(rgtcnt.begin()->second, i.second);
            //  cout << v2 + rgtcnt.begin()->first << '\n';
            int op1 = -v2 + lftcnt.rbegin()->first;
            int op2 = v3 + rgtcnt.begin()->first;
            bool tr1 = 1, tr2 = 1;
            if (getdst(first, op2, 1, lftcnt, rgtcnt) != i.first) {
                tr2 = 0;
            }
            if (lftcnt.rbegin()->first > op2 and getdst2(lftcnt.rbegin()->first, op2, lftcnt, rgtcnt) != v2) {
                tr2 = 0;
            }
            //cout << i.first << ' ' << first << ' ' << op1 << ' ' << getdst(first, op1, 0, lftcnt, rgtcnt) << '\n';
            if (getdst(first, op1, 0, lftcnt, rgtcnt) != i.first) {
                tr1 = 0;
            }
            if (tr2 and op2 < first and getdst(first, op2, 1, lftcnt, rgtcnt) == i.first) {
                tr1 = 0;
            }//cout << tr1 << ' ' << tr2 << '\n';
            //cout << "(" << op1 << ' ' << op2 << ")\n";
                //cout << "No\n";
            if (tr1) {
                rgtcnt.insert({op1, i.second});
                location[i.second] = op1;
                stype[i.second] = 1;
              //  cout << i.second << "->" << op1 << '\n';
              //  cout << i.second << "->" << 1 << '\n';
            } else {
                lftcnt.insert({op2, i.second});
                location[i.second] = op2;
                stype[i.second] = 2;
             //   cout << i.second << "->" << op2 << '\n';
             //   cout << i.second << "->" << 2 << '\n';
            }
        }
    }
}
/*
typedef struct Station {
    int index;
    int type;
    int location;
    int L,R;
}STATION;
long long cnt;
static int S,SUBTASK;
static STATION stations[10004];

int cmp_fun_1(const void *a,const void *b)
{
    STATION c,d;
    c = *(STATION*)(a);
    d = *(STATION*)(b);
    return c.location < d.location ? -1 : 1;
}

int cmp_fun_2(const void *a,const void *b)
{
    STATION c,d;
    c = *(STATION*)(a);
    d = *(STATION*)(b);
    return c.index < d.index ? -1 : 1;
}

void now_I_want_to_getLR(){
    int now = stations[S-1].index,i;
    for(i=S-2;i>=0;i--){
        stations[i].R = now;
        if(stations[i].type==2)	now = stations[i].index;
    }
    now = stations[0].index;
    for(i=1;i<S;i++){
        stations[i].L = now;
        if(stations[i].type==1)	now = stations[i].index;
    }
}

int getDistance(int x,int y)
{
    cnt++;
    if(x==y)	return 0;
    if(x<0 || x>=S || y<0 || y>=S)    return -1;
    if(stations[x].location > stations[y].location){
        int tmp = x;
        x = y;
        y = tmp;
    }
    int ret = 0;
    if(stations[x].type==1 && stations[y].type==1){
        ret = stations[stations[y].R].location-stations[x].location+stations[stations[y].R].location-stations[y].location;
    }else if(stations[x].type==1 && stations[y].type==2){
        ret = stations[y].location-stations[x].location;
    }else if(stations[x].type==2 && stations[y].type==2){
        ret = stations[x].location-stations[stations[x].L].location+stations[y].location-stations[stations[x].L].location;
    }else if(stations[x].type==2 && stations[y].type==1){
        ret = stations[x].location-stations[stations[x].L].location+stations[stations[y].R].location
              -stations[stations[x].L].location+stations[stations[y].R].location-stations[y].location;
    }
    return ret;
}


void getInput()
{
    int g;
    g = scanf("%d",&SUBTASK);
    g = scanf("%d",&S);
    int s;
    for (s = 0; s < S; s++) {
        int type, location;
        g = scanf(" %d %d",&type,&location);
        stations[s].index = s;
        stations[s].location = location;
        stations[s].type = type;
        stations[s].L = -1;
        stations[s].R = -1;
    }
    qsort(stations, S, sizeof(STATION), cmp_fun_1);
    now_I_want_to_getLR();
    qsort(stations, S, sizeof(STATION), cmp_fun_2);
}

int serverGetStationNumber()
{
    return S;
}

int serverGetSubtaskNumber()
{
    return SUBTASK;
}

int serverGetFirstStationLocation()
{
    return stations[0].location;
}

int main()
{
    int i;
    getInput();
    cnt = 0;

    int location[10005];
    int type[10005];
    int ok = 1;
    findLocation(S, serverGetFirstStationLocation(),location, type);
    if(SUBTASK==3 && cnt>S*(S-1))	ok = 0;
    if(SUBTASK==4 && cnt>3*(S-1))	ok = 0;


    for (i = 0; i < S; i++)
        if(type[i]!=stations[i].type || location[i]!=stations[i].location)
            ok = 0;
    if(ok==0)	printf("Incorrect");
    else	printf("Correct");
    return 0;
}*/
/*
3
6
1 5
1 1
2 12
2 2
1 3
2 4
2 6
1 6
2 8
1 9
2 10
1 11
 */

詳細信息

Subtask #1:

score: 8
Accepted

Test #1:

score: 8
Accepted
time: 0ms
memory: 3792kb

input:

1
100
1 11
2 794
2 775
2 347
2 737
2 864
2 584
2 555
2 361
2 429
2 892
2 302
2 483
2 217
2 39
2 566
2 435
2 448
2 304
2 466
2 386
2 780
2 164
2 918
2 601
2 867
2 929
2 341
2 636
2 556
2 954
2 430
2 683
2 301
2 519
2 547
2 237
2 426
2 908
2 667
2 670
2 210
2 502
2 887
2 420
2 675
2 401
2 724
2 493
2 ...

output:

Correct

result:

ok 

Test #2:

score: 0
Accepted
time: 0ms
memory: 3744kb

input:

1
100
1 13
2 768
2 165
2 101
2 185
2 678
2 145
2 865
2 650
2 769
2 985
2 756
2 236
2 973
2 688
2 522
2 654
2 316
2 598
2 901
2 274
2 547
2 744
2 511
2 684
2 331
2 822
2 757
2 198
2 85
2 526
2 363
2 186
2 711
2 393
2 683
2 928
2 43
2 805
2 914
2 152
2 239
2 840
2 916
2 893
2 509
2 514
2 561
2 410
2 7...

output:

Correct

result:

ok 

Test #3:

score: 0
Accepted
time: 0ms
memory: 4080kb

input:

1
100
1 21
2 40
2 217
2 337
2 711
2 392
2 260
2 838
2 625
2 839
2 378
2 468
2 338
2 105
2 663
2 79
2 993
2 811
2 398
2 694
2 742
2 937
2 281
2 131
2 733
2 710
2 520
2 128
2 381
2 912
2 345
2 718
2 623
2 90
2 330
2 983
2 307
2 168
2 608
2 147
2 898
2 428
2 837
2 92
2 268
2 349
2 255
2 667
2 43
2 270
...

output:

Correct

result:

ok 

Test #4:

score: 0
Accepted
time: 0ms
memory: 3876kb

input:

1
100
1 30
2 512
2 723
2 790
2 546
2 811
2 767
2 427
2 761
2 489
2 938
2 287
2 195
2 145
2 231
2 87
2 62
2 691
2 671
2 583
2 268
2 522
2 395
2 632
2 500
2 873
2 863
2 478
2 447
2 904
2 809
2 311
2 627
2 951
2 857
2 718
2 636
2 552
2 560
2 574
2 191
2 755
2 71
2 774
2 194
2 134
2 466
2 866
2 69
2 86
...

output:

Correct

result:

ok 

Test #5:

score: 0
Accepted
time: 0ms
memory: 3792kb

input:

1
100
1 38
2 657
2 545
2 832
2 707
2 992
2 829
2 423
2 985
2 162
2 897
2 335
2 744
2 756
2 352
2 238
2 268
2 677
2 824
2 960
2 733
2 496
2 411
2 63
2 675
2 223
2 745
2 193
2 85
2 885
2 202
2 630
2 717
2 910
2 622
2 898
2 685
2 413
2 934
2 647
2 157
2 690
2 999
2 395
2 310
2 425
2 134
2 323
2 510
2 9...

output:

Correct

result:

ok 

Test #6:

score: 0
Accepted
time: 0ms
memory: 3880kb

input:

1
100
1 12
2 669
2 901
2 133
2 896
2 738
2 776
2 44
2 134
2 154
2 29
2 638
2 937
2 874
2 235
2 397
2 779
2 709
2 588
2 701
2 324
2 965
2 865
2 251
2 710
2 715
2 689
2 249
2 174
2 551
2 270
2 427
2 684
2 518
2 165
2 812
2 914
2 298
2 68
2 899
2 936
2 357
2 773
2 524
2 755
2 552
2 233
2 343
2 605
2 90...

output:

Correct

result:

ok 

Test #7:

score: 0
Accepted
time: 0ms
memory: 3820kb

input:

1
100
1 47
2 198
2 904
2 942
2 714
2 510
2 431
2 594
2 690
2 75
2 449
2 786
2 920
2 277
2 731
2 742
2 136
2 760
2 633
2 224
2 637
2 927
2 959
2 222
2 657
2 474
2 611
2 401
2 307
2 759
2 952
2 563
2 701
2 666
2 425
2 484
2 613
2 115
2 505
2 688
2 564
2 292
2 609
2 194
2 375
2 703
2 330
2 336
2 555
2 ...

output:

Correct

result:

ok 

Test #8:

score: 0
Accepted
time: 0ms
memory: 4076kb

input:

1
100
1 7
2 631
2 253
2 535
2 16
2 311
2 891
2 250
2 698
2 843
2 525
2 43
2 740
2 429
2 610
2 643
2 276
2 529
2 243
2 174
2 229
2 537
2 288
2 685
2 459
2 823
2 878
2 72
2 759
2 663
2 573
2 366
2 294
2 179
2 842
2 144
2 265
2 541
2 340
2 791
2 936
2 432
2 572
2 898
2 75
2 201
2 427
2 670
2 375
2 8
2 ...

output:

Correct

result:

ok 

Test #9:

score: 0
Accepted
time: 0ms
memory: 4044kb

input:

1
100
1 34
2 445
2 537
2 285
2 903
2 312
2 975
2 250
2 885
2 125
2 818
2 557
2 560
2 525
2 400
2 227
2 577
2 50
2 340
2 748
2 390
2 370
2 508
2 663
2 150
2 144
2 923
2 741
2 746
2 909
2 100
2 191
2 446
2 385
2 759
2 713
2 696
2 996
2 838
2 515
2 353
2 747
2 75
2 879
2 499
2 654
2 456
2 550
2 994
2 9...

output:

Correct

result:

ok 

Test #10:

score: 0
Accepted
time: 0ms
memory: 3852kb

input:

1
100
1 31
2 325
2 179
2 190
2 113
2 350
2 720
2 553
2 712
2 465
2 524
2 657
2 671
2 665
2 390
2 348
2 620
2 901
2 342
2 116
2 649
2 724
2 473
2 789
2 618
2 890
2 449
2 334
2 669
2 232
2 363
2 346
2 763
2 554
2 459
2 114
2 626
2 178
2 91
2 889
2 180
2 100
2 912
2 197
2 843
2 260
2 170
2 96
2 954
2 2...

output:

Correct

result:

ok 

Subtask #2:

score: 22
Accepted

Test #11:

score: 22
Accepted
time: 0ms
memory: 4044kb

input:

2
100
1 7327
1 116
2 9993
1 2736
1 6502
1 4106
1 6326
2 8055
1 6767
1 388
2 7645
1 1780
1 6159
2 7738
1 3706
1 3476
2 9549
2 7564
1 2401
1 6353
2 8829
1 945
1 606
1 4664
2 9585
2 7499
1 6703
1 3229
1 1382
2 8286
1 6805
1 351
1 793
1 1641
1 3087
1 3647
1 2099
2 9414
1 1703
2 8866
2 9802
2 9348
1 6999...

output:

Correct

result:

ok 

Test #12:

score: 0
Accepted
time: 0ms
memory: 3852kb

input:

2
100
1 1901
1 411
2 9673
2 2260
2 8712
2 7185
2 5395
1 1269
2 3469
2 2852
2 2413
2 7783
2 5977
1 1813
2 6087
2 8802
2 3390
2 5039
2 2569
2 4694
2 4812
2 5704
1 586
2 9645
2 4978
2 8969
1 1204
2 2191
2 5943
1 689
2 7955
2 9270
2 6567
2 4334
2 3816
2 8314
2 1955
2 7285
1 1166
1 720
1 1420
2 3495
2 25...

output:

Correct

result:

ok 

Test #13:

score: 0
Accepted
time: 0ms
memory: 3852kb

input:

2
100
1 1415
1 437
2 9880
2 3580
2 7655
2 6320
2 2670
2 4305
2 4632
2 7346
2 9814
2 9368
2 5374
2 2260
2 3386
2 4316
2 3357
2 7526
2 7175
2 7817
2 3513
2 4225
2 2655
2 5494
2 8763
2 9731
2 5138
1 1142
2 4612
2 4541
2 5931
1 584
2 9734
2 9511
2 8239
2 2406
2 2182
2 2545
2 7039
2 5880
2 8711
2 6407
1 ...

output:

Correct

result:

ok 

Test #14:

score: 0
Accepted
time: 0ms
memory: 3876kb

input:

2
100
1 2038
1 225
2 9673
2 7337
2 5096
2 4800
2 6802
2 7455
2 4099
2 4191
1 1709
1 1103
2 5684
2 6557
2 2721
2 5856
2 4968
2 7917
1 1993
2 9660
2 5644
1 1917
2 3549
1 1585
2 6539
1 1260
2 7557
1 947
1 1881
2 2710
2 8560
2 2742
2 3714
2 7543
2 6868
2 7464
1 1642
1 1060
2 5525
2 9097
1 1122
1 1210
2 ...

output:

Correct

result:

ok 

Test #15:

score: 0
Accepted
time: 0ms
memory: 3816kb

input:

2
100
1 7252
1 151
2 9808
1 3057
1 4522
1 5639
1 6094
2 9254
2 8858
1 5939
2 8584
1 7218
2 8112
1 4381
1 3678
1 1662
1 1899
1 5713
1 3520
1 4699
2 8353
1 6579
2 9583
2 8042
1 2588
1 4762
1 1522
1 6720
1 4373
1 896
2 7340
1 4376
1 3940
1 4275
2 7433
1 4814
1 6266
1 4068
1 5124
1 5819
1 2652
1 2343
1 ...

output:

Correct

result:

ok 

Test #16:

score: 0
Accepted
time: 0ms
memory: 3748kb

input:

2
100
1 3294
1 357
2 9844
2 9740
2 5435
2 9577
1 864
2 5781
1 851
2 3821
2 4905
2 4712
2 4633
2 9524
2 5642
1 1230
2 7759
2 3568
2 8011
1 3247
2 9641
2 4309
2 9125
1 2458
1 1907
2 9538
2 5194
1 2491
2 3399
2 7903
1 1500
2 9700
2 7643
2 6935
2 5630
2 4860
2 9068
2 6481
2 8681
2 3973
2 7546
2 9666
2 4...

output:

Correct

result:

ok 

Test #17:

score: 0
Accepted
time: 0ms
memory: 3796kb

input:

2
100
1 4873
1 217
2 9694
1 2520
2 5783
2 9383
2 6576
1 1423
2 5313
2 9437
2 5334
1 3222
1 3794
1 1001
2 6338
2 5692
1 1460
1 334
2 6029
1 3147
2 7309
2 6978
2 6554
2 8726
1 1030
1 2838
2 7012
1 2116
2 6742
2 6081
1 275
1 3772
2 4954
2 6058
2 9508
2 7882
1 3834
1 4821
2 7685
1 3271
2 7259
1 3417
2 6...

output:

Correct

result:

ok 

Test #18:

score: 0
Accepted
time: 0ms
memory: 3880kb

input:

2
100
1 2614
1 286
2 9704
1 1272
2 8020
2 9591
2 5027
2 2725
2 3140
1 2235
1 2453
1 1187
2 3012
1 1545
2 4515
2 7054
2 5093
2 8592
1 1445
1 2292
2 3280
2 8146
2 5169
2 6695
1 2267
2 4584
1 1167
2 3103
2 4766
1 689
2 2741
2 4014
2 4434
2 8183
2 9041
2 3512
1 1323
2 7628
2 5965
1 2510
1 640
1 2550
2 4...

output:

Correct

result:

ok 

Test #19:

score: 0
Accepted
time: 0ms
memory: 3788kb

input:

2
100
1 6399
1 178
2 9675
1 3942
1 3328
1 4149
1 3640
1 6214
2 8677
1 2608
1 3755
1 1524
1 5766
1 3158
1 1165
1 4695
2 6866
1 4729
1 529
1 4207
2 6663
2 7778
1 3203
1 614
2 8457
1 5472
1 5182
1 3799
2 9316
1 4361
1 2311
1 4655
2 6460
1 1992
2 8804
1 2135
1 1371
1 5130
1 1095
1 1478
2 6654
2 6862
1 4...

output:

Correct

result:

ok 

Test #20:

score: 0
Accepted
time: 0ms
memory: 4076kb

input:

2
100
1 7653
1 473
2 9622
2 9239
1 4765
1 4086
1 4598
1 736
1 6988
1 5711
1 3386
1 3780
1 6603
1 5591
1 6070
1 6290
1 894
1 1714
1 3094
1 4744
1 6656
1 6707
1 910
1 5948
2 8821
1 7254
1 2407
2 7928
1 1157
1 5232
1 7306
1 7482
1 1219
1 6545
2 8599
1 5305
1 7495
1 5687
2 8645
1 3207
1 5688
2 8383
1 33...

output:

Correct

result:

ok 

Subtask #3:

score: 0
Wrong Answer

Test #21:

score: 0
Wrong Answer
time: 3ms
memory: 4340kb

input:

3
5000
1 763228
1 39310
2 962072
2 203549
1 85439
2 414565
2 78225
1 185073
2 174996
2 386604
1 662313
2 96651
1 271323
2 556033
1 788441
1 717148
1 404737
2 197742
2 760887
1 549658
2 713177
1 156708
1 858133
1 166177
1 809643
2 365041
1 73222
2 706708
2 296516
1 861386
1 782475
2 167675
1 100665
1...

output:

Incorrect

result:

wrong answer Token "Incorrect" doesn't correspond to pattern "Correct"

Subtask #4:

score: 0
Wrong Answer

Test #31:

score: 0
Wrong Answer
time: 3ms
memory: 4048kb

input:

3
5000
1 763228
1 39310
2 962072
2 203549
1 85439
2 414565
2 78225
1 185073
2 174996
2 386604
1 662313
2 96651
1 271323
2 556033
1 788441
1 717148
1 404737
2 197742
2 760887
1 549658
2 713177
1 156708
1 858133
1 166177
1 809643
2 365041
1 73222
2 706708
2 296516
1 861386
1 782475
2 167675
1 100665
1...

output:

Incorrect

result:

wrong answer Token "Incorrect" doesn't correspond to pattern "Correct"