Submission details
Task:Concentric Tubes
Sender:Rasse
Submission time:2025-11-26 17:18:10 +0200
Language:C++ (C++17)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#30.00 sdetails
#40.00 sdetails
#50.00 sdetails
#60.00 sdetails
#70.00 sdetails
#80.00 sdetails
#90.00 sdetails
#100.00 sdetails
#110.00 sdetails
#120.00 sdetails
#130.00 sdetails
#140.00 sdetails
#150.00 sdetails
#160.01 sdetails
#170.01 sdetails
#180.11 sdetails

Code

#include <bits/stdc++.h>
using namespace std;
#define int long long

signed main() {
    int n;
    cin >> n;
    vector<tuple<int, int, int, int>> arr(0);

    vector<tuple<int, int, int>> disks(n);
    for (int i = 0; i < n; i++)
        cin >> get<0>(disks[i]);
    for (int i = 0; i < n; i++)
        cin >> get<1>(disks[i]);
    for (int i = 0; i < n; i++)
        get<2>(disks[i]) = i;
    sort(disks.begin(), disks.end(), [](const tuple<int, int, int>& a, const tuple<int, int, int>& b){ return (int)get<1>(a) < (int)get<1>(b); });
    arr.push_back({get<1>(disks[0]), 1, -1, get<2>(disks[0])});

    for (int i = 1; i < n; i++)
    {
        auto it = std::upper_bound(arr.begin(), arr.end(), tuple<int, int, int, int>{get<0>(disks[i]), INT_MAX, 0, 0});
        int inside = 0;
        if (it != arr.begin())
        {
            it--;
            inside = get<1>(*it);
        }
        else
            it--;
        inside++;
        if (inside > get<1>(arr.back()))
            arr.push_back(tuple<int, int, int, int>{get<1>(disks[i]), inside, it - arr.begin(), get<2>(disks[i])});
    }
    cout << get<1>(arr.back()) << "\n";

    int arrIdx = arr.size()-1;
    while (arrIdx != -1)
    {
        cout << get<3>(arr[arrIdx]) + 1 << " ";
        arrIdx = get<2>(arr[arrIdx]);
    }
}

Test details

Test 1

Verdict: ACCEPTED

input
1

10 

correct output
1

user output
1

Test 2

Verdict: ACCEPTED

input
2
2 3 
5 10 

correct output
1

user output
1

Test 3

Verdict:

input
3
6 2 3 
9 4 8 

correct output
2
2 1 

user output
2
1 2 

Test 4

Verdict:

input
4
9 9 6 3 
10 10 8 7 

correct output
2
4 1 

user output
2
1 4 

Test 5

Verdict:

input
5
3 2 9 6 2 
5 10 10 9 3 

correct output
4
5 1 4 3 

user output
4
3 4 1 5 

Test 6

Verdict:

input
6
2 5 2 3 7 1 
10 10 4 10 9 2 

correct output
3
6 3 5 

user output
3
5 3 6 

Test 7

Verdict:

input
7
2 4 4 4 4 6 2 
6 10 9 6 5 10 8 

correct output
2
5 6 

user output
2
6 5 

Test 8

Verdict:

input
8
4 2 2 4 5 5 5 5 
9 5 10 7 9 8 6 9 

correct output
2
2 7 

user output
2
7 2 

Test 9

Verdict:

input
9
1 3 6 5 3 2 2 2 3 
2 5 9 6 6 4 3 4 5 

correct output
5
1 7 2 4 3 

user output
5
3 4 2 7 1 

Test 10

Verdict:

input
10
4 2 2 6 7 4 3 4 2 3 
8 4 3 8 8 5 8 9 6 7 

correct output
3
3 6 4 

user output
3
4 6 3 

Test 11

Verdict:

input
10
3 2 1 7 5 3 8 2 5 2 
6 4 2 10 6 9 10 10 9 10 

correct output
4
3 2 5 4 

user output
4
4 5 2 3 

Test 12

Verdict:

input
10
3 2 8 4 2 1 6 7 2 4 
10 6 10 9 4 2 10 8 3 5 

correct output
5
6 9 10 8 3 

user output
5
3 8 10 9 6 

Test 13

Verdict:

input
10
6 7 4 7 8 9 7 3 8 5 
8 8 7 9 9 10 10 5 10 8 

correct output
4
8 1 5 6 

user output
4
6 5 1 8 

Test 14

Verdict:

input
10
6 3 6 4 4 4 2 3 3 3 
10 10 8 7 9 5 6 6 4 8 

correct output
3
9 6 3 

user output
3
3 6 9 

Test 15

Verdict:

input
100
822996947 734489027 192088037 ...

correct output
12
91 79 84 15 7 86 24 59 65 61 4...

user output
12
8 43 61 65 59 24 86 7 15 84 79...

Test 16

Verdict:

input
1000
111735663 297257984 561742368 ...

correct output
32
358 507 775 556 630 679 280 25...

user output
32
973 661 161 131 79 907 709 347...
Truncated

Test 17

Verdict:

input
10000
316394141 195182398 569713189 ...

correct output
112
1134 6761 4604 3840 20 7490 92...

user output
112
2949 5138 5385 2069 5822 5445 ...
Truncated

Test 18

Verdict:

input
100000
457164810 81615942 542726432 3...

correct output
363
9442 43192 86004 46207 95417 2...

user output
363
18487 77088 93114 34058 38104 ...
Truncated