QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#347959#6754. Selectionwtz2333AC ✓1ms3964kbC++172.2kb2024-03-09 16:26:232024-03-09 16:26:23

Judging History

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

  • [2024-03-09 16:26:23]
  • 评测
  • 测评结果:AC
  • 用时:1ms
  • 内存:3964kb
  • [2024-03-09 16:26:23]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
__gnu_pbds ::tree<pair<int, int>, __gnu_pbds::null_type, less<pair<int, int> >,
                  __gnu_pbds::rb_tree_tag,
                  __gnu_pbds::tree_order_statistics_node_update>
    s,S;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n,m,q;
    cin >> n >> m >> q;
    m --;
    vector<int> a(n),b(n);
    for(int i = 0;i < n;i ++) {
        cin >> a[i] >> b[i];
        a[i] = -a[i];
        if(b[i] == 1) {
            S.insert({a[i],b[i]});
        }
        s.insert({a[i],b[i]});
    }
    for(int i = 0;i < q;i ++) {
        int opt,x;
        cin >> opt >> x;
        x --;
        if(opt == 1) {
            int y;
            cin >> y;
            if(b[x] == y)continue;
            else {
                s.erase({a[x],b[x]});
                b[x] = y;
                s.insert({a[x],b[x]});
                if(y == 1) {
                    S.insert({a[x],b[x]});
                }else {
                    S.erase({a[x],b[x]});
                }
            }
        }else {
            if(b[x] == 1) {
                // cout << S.order_of_key({a[x],b[x]}) << endl;
                if(s.order_of_key({a[x],b[x]}) <= m) {
                    cout << 1 << "\n";
                }
                else if(S.order_of_key({a[x],b[x]}) == 0) {
                    cout << 1 << "\n";
                }else cout << 0 << "\n";
            }
            else if(S.size() == 0) {
                if(s.order_of_key({a[x],b[x]}) <= m) {
                    cout << 1 << "\n";
                }else cout << 0 << "\n";
            }
            else {
                auto t = *S.begin();
                int mm = m;
                if(s.order_of_key(t) > m) {
                    mm --;
                }
                // cerr << s.order_of_key({a[x],b[x]}) << endl;
                if(s.order_of_key({a[x],b[x]}) <= m) {
                    cout << 1 << "\n";
                }else cout << 0 << "\n";
            }
        }
    }
}

// 1 0 0 1 0 0 
// 0 1 0 0 1 0
// 0 0 0 0 0 0
// 1 0 0 1 0 0

详细

Test #1:

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

input:

3 2 3
3 0
1 1
2 0
2 2
1 2 0
2 2

output:

1
0

result:

ok 2 number(s): "1 0"

Test #2:

score: 0
Accepted
time: 1ms
memory: 3712kb

input:

1000 1 1000
617 0
199 0
776 0
536 1
258 0
311 1
579 0
844 0
356 1
587 0
564 0
782 0
37 1
717 1
612 1
245 1
444 1
750 0
52 1
92 1
741 0
266 1
71 1
189 1
419 1
580 1
585 1
268 1
255 0
490 1
70 1
497 1
829 1
469 1
641 0
929 1
379 1
507 0
474 1
407 0
221 1
985 0
815 1
217 0
445 1
386 0
132 0
154 0
736 1...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 470 numbers

Test #3:

score: 0
Accepted
time: 1ms
memory: 3736kb

input:

1000 1 1000
541 1
236 1
583 1
99 0
324 0
107 0
459 0
854 0
772 0
426 1
717 1
806 0
335 0
503 0
860 0
463 1
306 1
813 0
947 1
989 0
736 1
713 0
65 1
222 0
428 0
680 0
652 1
681 1
661 0
595 1
474 1
70 1
641 1
688 0
591 0
20 1
330 1
563 0
38 1
638 1
391 1
979 1
488 0
829 0
956 1
395 1
694 0
669 0
567 0...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 516 numbers

Test #4:

score: 0
Accepted
time: 1ms
memory: 3660kb

input:

1000 50 1000
950 0
163 0
276 0
422 1
449 0
81 0
245 1
995 1
908 1
466 0
123 0
848 1
749 0
370 1
86 1
299 1
384 0
570 1
678 0
713 0
360 0
737 0
627 0
60 1
250 1
88 1
915 1
145 0
863 0
925 1
742 0
409 1
858 1
441 0
803 0
811 1
575 0
47 0
271 1
107 1
431 0
677 1
704 0
340 0
160 0
856 1
176 0
488 1
832 ...

output:

0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
...

result:

ok 511 numbers

Test #5:

score: 0
Accepted
time: 1ms
memory: 3932kb

input:

1000 1 1000
900 1
127 1
89 1
836 1
434 1
912 1
459 0
155 1
394 0
669 1
33 1
584 0
80 0
433 1
284 1
43 0
377 0
84 1
91 1
158 0
406 1
654 0
604 0
469 1
352 1
762 1
824 0
423 1
172 0
62 1
399 0
130 1
19 1
640 1
212 0
215 0
661 0
597 0
309 1
688 1
978 0
677 0
170 0
853 1
448 1
945 1
765 0
751 0
830 0
25...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 467 numbers

Test #6:

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

input:

1000 10 1000
135 1
844 1
342 0
548 0
385 0
595 1
271 1
189 0
685 0
951 0
586 0
132 0
537 0
99 1
828 1
676 1
407 1
20 0
297 0
91 1
336 1
113 0
370 1
498 0
201 1
866 1
64 0
443 0
852 0
46 0
51 0
146 1
650 1
60 0
349 0
773 1
556 0
219 1
526 1
659 1
913 1
260 1
186 0
787 0
130 1
669 0
307 1
105 1
316 1
...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 488 numbers