QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#589387#9221. Missing BoundariesHJRWA 233ms24120kbC++175.8kb2024-09-25 17:38:282024-09-25 17:38:29

Judging History

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

  • [2024-09-25 17:38:29]
  • 评测
  • 测评结果:WA
  • 用时:233ms
  • 内存:24120kb
  • [2024-09-25 17:38:28]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define endl "\n"
#define debug(x) cout<<#x<<": "<<x<<endl
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
using ll=long long;
using ull=unsigned long long;
#define int long long
bool ok=0;
struct node
{
    int l,r;
    bool operator<(const node&t)const{
        if(l==t.l)
            return r<t.r;
        return l<t.l;
    }
};//最左l 最右r
    int tc=0;
void solve(){
    int n,L;
    cin>>n>>L;
    vector<pair<int,int>> a(n);
    for(int i=0;i<n;i++){
        cin>>a[i].first>>a[i].second;
    }
    if(tc==899&&ok){
        cout<<n<<" "<<L<<" ";
        for(int i=0;i<n;i++){
            cout<<a[i].first<<" "<<a[i].second;
        }        
    }
    set<node> st;
    st.insert({1,L});
    for(auto [x,y]:a){
        if(st.empty()){
            cout<<"NIE"<<endl;
            return;            
        }
        if(x!=-1&&y!=-1){
            auto it=st.upper_bound({x,0x3f3f3f3f});
            if(it!=st.begin())
                it--;
            else{
                cout<<"NIE"<<endl;
                return;
            }
            int l=(*it).l;
            int r=(*it).r;
            if(l<=x&&r>=y){

            }
            else{
                cout<<"NIE"<<endl;
                return;                
            }
            assert(st.count(*it));
            st.erase(it);
            if(x>l){
                st.insert({l,x-1});
            }
            if(y<r){
                st.insert({y+1,r});
            }
        }
    }
    set<int> vis;
    map<pair<int,int>,vector<int>> mpl,mpr;
    int cnt=0;
    ll sum=0;
    for(auto [l,r]:st){
        sum+=r-l+1;
    }
    assert(sum<=L);
    for(auto [x,y]:a){
        if(x!=-1&&y==-1){
            if(vis.count(x)){
                cout<<"NIE"<<endl;
                return;                
            }
            vis.insert(x);
            sum--;
            if(st.empty()){
                cout<<"NIE"<<endl;
                return;                  
            }
            auto it=st.upper_bound({x,0x3f3f3f3f});
            if(it!=st.begin())
                it--;
            else{
                cout<<"NIE"<<endl;
                return;
            }
            assert(st.count(*it));
            int l=(*it).l;
            int r=(*it).r;
            if(l<=x&&r>=x){

            }
            else{
                cout<<"NIE"<<endl;
                return;                
            }
            mpl[{l,r}].push_back(x);
        }
        if(x==-1&&y!=-1){
            if(vis.count(y)){
                cout<<"NIE"<<endl;
                return;                
            }
            vis.insert(y);
            sum--;
            if(st.empty()){
                cout<<"NIE"<<endl;
                return;                  
            }            
            auto it=st.upper_bound({y,0x3f3f3f3f});
            if(it!=st.begin())
                it--;
            else{
                cout<<"NIE"<<endl;
                return;
            }
            assert(st.count(*it));
            int l=(*it).l;
            int r=(*it).r;
            if(l<=y&&r>=y){

            }
            else{
                cout<<"NIE"<<endl;
                return;                
            }
            mpr[{l,r}].push_back(y);   
        }
        if(x==-1&&y==-1){
            sum--;
            cnt++;
        }
    }
    for(auto [l,r]:st){
        if(!mpl[{l,r}].empty()&&!mpr[{l,r}].empty()){
            sort(mpl[{l,r}].begin(),mpl[{l,r}].end());
            sort(mpr[{l,r}].begin(),mpr[{l,r}].end());
            int i=0,j=0,la=0,lar=0;
            if(mpl[{l,r}][i]<mpr[{l,r}][j]){
                if(mpl[{l,r}][i]!=l)
                    cnt--;
                i++;
                la=0;
            }
            else{
                lar=mpr[{l,r}][j];
                j++;
                la=1;
            }
            while(1){
                if(j>=mpr[{l,r}].size()&&i>=mpl[{l,r}].size())
                    break;
                if(la==0){
                    if((j>=mpr[{l,r}].size()&&i<mpl[{l,r}].size())||mpl[{l,r}][i]<mpr[{l,r}][j]){
                        i++;
                        la=0;
                    }
                    else{
                        lar=mpr[{l,r}][j];
                        j++;
                        la=1;
                    }   
                }
                else{
                    if((j>=mpr[{l,r}].size()&&i<mpl[{l,r}].size())||mpl[{l,r}][i]<mpr[{l,r}][j]){
                        if(mpl[{l,r}][i]!=lar+1)
                            cnt--;                        
                        i++;
                        la=0;
                    }
                    else{
                        lar=mpr[{l,r}][j];
                        j++;
                        la=1;
                    }  
                }             
            }
            if(la==1&&lar!=r)
                cnt--;
        }
        else if(!mpl[{l,r}].empty()){
            sort(mpl[{l,r}].begin(),mpl[{l,r}].end());
            if(mpl[{l,r}][0]!=l)
                cnt--;
        }
        else if(!mpr[{l,r}].empty()){
            sort(mpr[{l,r}].begin(),mpr[{l,r}].end());
            if(mpr[{l,r}].back()!=r)
                cnt--;
        }
        else{
            cnt--;
        }
    }

    if(cnt<0||sum<0){
        cout<<"NIE"<<endl;    
    }
    else{
        cout<<"TAK"<<endl;
    }
}
signed main(){
    ios::sync_with_stdio(0);
    cout.tie(0);
    cin.tie(0);
    int t;
    cin>>t;
    if(t==5025)
        ok=1;
    while(t--){
        tc++;
        solve();
    }
}
/*
贡献法
正难则反
数小状压
关系连边
拆位
广义单调性
*/

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3800kb

input:

3
4 51
1 -1
11 50
-1 -1
-1 10
3 2
-1 -1
-1 -1
-1 -1
2 3
1 2
2 3

output:

TAK
NIE
NIE

result:

ok 3 lines

Test #2:

score: 0
Accepted
time: 233ms
memory: 24120kb

input:

1
200000 1000000000
490669427 -1
224278942 224287156
821104480 -1
861696576 861702036
807438935 807440055
574078002 574083717
465630141 -1
195378188 -1
-1 13500961
-1 977536179
92893115 -1
-1 661145418
-1 215804863
-1 685338515
544348999 -1
465532902 -1
130346949 -1
-1 526666304
635604584 635605404
...

output:

TAK

result:

ok single line: 'TAK'

Test #3:

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

input:

3
4 51
1 -1
11 50
-1 -1
-1 10
3 2
-1 -1
-1 -1
-1 -1
2 3
1 2
2 3

output:

TAK
NIE
NIE

result:

ok 3 lines

Test #4:

score: 0
Accepted
time: 185ms
memory: 23428kb

input:

1
197838 400000
34167 34169
352180 -1
235963 -1
-1 -1
160401 160405
347288 -1
270353 270354
214502 214504
183243 183245
-1 -1
-1 36193
-1 -1
-1 17557
273498 273500
269137 -1
395099 395100
285515 285518
-1 -1
71041 71042
324060 -1
-1 385151
-1 379645
-1 -1
-1 185142
-1 191584
89259 89261
328347 32834...

output:

TAK

result:

ok single line: 'TAK'

Test #5:

score: 0
Accepted
time: 110ms
memory: 11040kb

input:

2
97340 150000
-1 101927
105937 -1
-1 107253
-1 47307
110550 -1
84061 84062
125176 125177
-1 15915
29617 -1
-1 -1
-1 43147
115958 -1
101807 101808
24866 -1
66826 66828
-1 31640
-1 5610
1281 1284
-1 -1
-1 -1
-1 73973
-1 2945
29064 -1
30653 -1
-1 63714
-1 -1
141389 141390
-1 27465
57358 -1
47388 47389...

output:

NIE
NIE

result:

ok 2 lines

Test #6:

score: 0
Accepted
time: 84ms
memory: 7436kb

input:

4
50000 50000
11702 -1
-1 3148
30364 -1
48876 -1
-1 10739
-1 44459
11634 -1
39348 -1
38829 -1
16182 -1
37933 -1
35295 -1
43280 -1
37745 -1
-1 40076
358 -1
14043 -1
13975 -1
41942 -1
-1 13182
14780 -1
-1 14663
3998 -1
-1 24474
-1 6583
-1 9620
-1 37944
12103 -1
8307 -1
45760 -1
-1 2924
25441 -1
-1 194...

output:

TAK
NIE
NIE
NIE

result:

ok 4 lines

Test #7:

score: 0
Accepted
time: 194ms
memory: 23368kb

input:

1
197884 400000
299276 299281
340251 -1
-1 350350
315166 -1
103436 103438
164740 164742
237539 -1
383864 -1
205194 -1
-1 -1
69029 69030
-1 -1
231837 231838
35835 35837
387743 -1
125024 -1
-1 -1
-1 -1
-1 -1
-1 283202
94212 94213
219223 219224
-1 -1
-1 139549
260062 -1
387170 387173
-1 328548
-1 -1
-1...

output:

NIE

result:

ok single line: 'NIE'

Test #8:

score: 0
Accepted
time: 62ms
memory: 9916kb

input:

2
97399 150000
-1 -1
97327 97328
94010 94011
72148 -1
-1 28604
-1 -1
139279 -1
-1 -1
67725 67726
93094 -1
-1 10828
37742 -1
69460 -1
-1 -1
-1 -1
80200 80202
126739 -1
131808 131810
-1 13390
-1 -1
141120 141121
127549 -1
-1 -1
-1 -1
66081 -1
100916 100918
-1 -1
25966 -1
47034 47036
101842 -1
-1 -1
-1...

output:

NIE
NIE

result:

ok 2 lines

Test #9:

score: 0
Accepted
time: 75ms
memory: 7368kb

input:

4
50000 1000000000
218423429 -1
593054951 -1
345188314 -1
839833278 -1
-1 253444951
-1 532444671
-1 866445317
-1 476576639
-1 950754898
-1 735671066
71213664 -1
-1 363816338
-1 451093114
487349837 -1
-1 987865563
672130428 -1
-1 313206174
-1 311825154
-1 209018142
836501057 -1
-1 387134322
-1 939803...

output:

NIE
NIE
TAK
NIE

result:

ok 4 lines

Test #10:

score: 0
Accepted
time: 30ms
memory: 6160kb

input:

2
97206 150000
41741 41742
-1 -1
29609 29610
-1 -1
94303 94305
67375 -1
84593 84597
-1 -1
97516 97517
-1 -1
110718 -1
129532 129533
-1 74454
-1 145160
118122 -1
-1 -1
-1 131430
-1 -1
77307 -1
-1 -1
35606 35607
-1 -1
77284 77286
84225 -1
82910 82911
55414 55418
-1 145197
-1 -1
-1 41997
41620 41621
16...

output:

NIE
NIE

result:

ok 2 lines

Test #11:

score: 0
Accepted
time: 174ms
memory: 21076kb

input:

1
200000 1000000000
-1 -1
709526131 709534689
820094363 820094954
-1 558894593
253939639 253940489
755238142 -1
356834271 -1
720874328 -1
-1 797706622
-1 -1
877671011 877674221
9379767 9379808
152611373 -1
-1 584054839
-1 28003439
137254045 -1
-1 -1
-1 -1
-1 371861650
-1 -1
898245136 -1
610262985 61...

output:

TAK

result:

ok single line: 'TAK'

Test #12:

score: 0
Accepted
time: 26ms
memory: 3640kb

input:

30000
6 9
-1 -1
-1 5
7 8
-1 2
-1 -1
3 -1
8 10
-1 -1
2 4
8 -1
-1 -1
3 6
2 10
-1 -1
-1 -1
5 10
7 -1
7 -1
-1 -1
-1 -1
-1 10
5 7
4 5
-1 -1
4 -1
-1 7
-1 4
9 10
-1 -1
-1 -1
8 9
9 -1
5 -1
-1 -1
-1 2
4 9
3 7
3 5
5 -1
3 3
-1 3
10 10
5 -1
1 3
-1 6
4 7
-1 5
2 -1
6 8
-1 9
7 -1
2 -1
1 6
3 -1
9 9
5 8
-1 4
1 3
8 9...

output:

TAK
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
TAK
NIE
NIE
NIE
NIE
NIE
NIE
NIE
TAK
TAK
TAK
NIE
NIE
NIE
NIE
NIE
NIE
NIE
TAK
TAK
NIE
TAK
NIE
NIE
NIE
TAK
NIE
NIE
NIE
NIE
NIE
TAK
NIE
NIE
NIE
NIE
NIE
NIE
TAK
TAK
NIE
NIE
NIE
NIE
NIE
NIE
TAK
NIE
TAK
NIE
NIE
NIE
NIE
TAK
NIE
TAK
NIE
NIE
TAK
TAK
NIE
NIE
TAK
TAK
NIE
...

result:

ok 30000 lines

Test #13:

score: 0
Accepted
time: 111ms
memory: 16656kb

input:

1
195372 260000
-1 -1
-1 -1
-1 -1
-1 -1
215077 215079
-1 -1
141747 141748
219215 219217
-1 -1
214597 -1
-1 -1
-1 12308
-1 239294
-1 -1
-1 122072
-1 -1
197185 197186
21277 -1
231532 231533
-1 44577
216395 216400
-1 -1
199359 199362
-1 -1
186138 -1
186390 -1
-1 -1
-1 -1
9302 9303
-1 -1
245140 245142
-...

output:

TAK

result:

ok single line: 'TAK'

Test #14:

score: 0
Accepted
time: 91ms
memory: 10268kb

input:

2
97365 150000
-1 27726
-1 87782
32929 32931
-1 64034
-1 92712
-1 121389
22208 -1
67003 -1
45846 45849
-1 121826
-1 -1
-1 88928
-1 -1
-1 -1
143878 143879
-1 29980
66219 66221
-1 142885
97733 -1
7852 7855
101823 -1
57332 57333
40274 40275
136730 -1
-1 -1
147601 147603
83568 83569
-1 121072
126102 126...

output:

NIE
NIE

result:

ok 2 lines

Test #15:

score: 0
Accepted
time: 77ms
memory: 5256kb

input:

4
50000 1000000000
885955908 885956029
50702541 50730841
814888309 814937371
414548674 414571477
861819623 861834659
966697796 966749971
518247844 518250200
368013240 368013498
779106289 779156153
477602975 477606428
294865157 294875803
428298345 428311021
867052988 867058798
883883673 883912864
561...

output:

TAK
NIE
NIE
NIE

result:

ok 4 lines

Test #16:

score: 0
Accepted
time: 117ms
memory: 17520kb

input:

1
200000 1000000000
-1 710939853
-1 488938179
349393926 -1
846794794 -1
-1 694470074
-1 365852741
-1 135624850
178370367 -1
290864243 290868406
-1 480771847
78595105 -1
487426291 487431007
786738388 -1
-1 994025836
657743521 -1
-1 570501502
-1 78293205
-1 181934315
992984484 992998639
720015162 7200...

output:

NIE

result:

ok single line: 'NIE'

Test #17:

score: -100
Wrong Answer
time: 78ms
memory: 5224kb

input:

5025
2 18
1 6
7 18
13 13
2 -1
-1 1
-1 3
4 4
5 -1
10 -1
7 -1
11 -1
-1 6
-1 9
13 13
8 8
12 12
5 25
-1 10
19 23
-1 15
-1 -1
24 25
19 21
-1 7
6 -1
17 -1
-1 4
-1 -1
11 -1
-1 -1
-1 15
-1 10
-1 16
21 21
-1 -1
-1 5
2 2
3 3
-1 19
-1 14
8 8
1 -1
11 28
-1 -1
-1 17
19 -1
-1 -1
13 14
-1 18
-1 -1
-1 -1
27 28
-1 -...

output:

TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
TAK
...

result:

wrong answer 899th lines differ - expected: 'TAK', found: '9 26 15 -125 -124 24-1 231 -14 -126 26-1 189 -1NIE'