| Task: | Concentric Tubes |
| Sender: | Rasse |
| Submission time: | 2025-11-26 17:19:03 +0200 |
| Language: | C++ (C++17) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | details |
| #2 | ACCEPTED | 0.00 s | details |
| #3 | ACCEPTED | 0.00 s | details |
| #4 | ACCEPTED | 0.00 s | details |
| #5 | ACCEPTED | 0.00 s | details |
| #6 | ACCEPTED | 0.00 s | details |
| #7 | ACCEPTED | 0.00 s | details |
| #8 | ACCEPTED | 0.00 s | details |
| #9 | ACCEPTED | 0.00 s | details |
| #10 | ACCEPTED | 0.00 s | details |
| #11 | ACCEPTED | 0.00 s | details |
| #12 | ACCEPTED | 0.00 s | details |
| #13 | ACCEPTED | 0.00 s | details |
| #14 | ACCEPTED | 0.00 s | details |
| #15 | ACCEPTED | 0.00 s | details |
| #16 | ACCEPTED | 0.01 s | details |
| #17 | ACCEPTED | 0.01 s | details |
| #18 | ACCEPTED | 0.12 s | details |
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";
vector<int> result;
int arrIdx = arr.size()-1;
while (arrIdx != -1)
{
result.push_back(get<3>(arr[arrIdx]) + 1);
arrIdx = get<2>(arr[arrIdx]);
}
reverse(result.begin(), result.end());
for (auto x : result)
cout << x << " ";
}Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 1 5 10 |
| correct output |
|---|
| 1 1 |
| user output |
|---|
| 1 1 |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 2 2 3 5 10 |
| correct output |
|---|
| 1 1 |
| user output |
|---|
| 1 1 |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 3 6 2 3 9 4 8 |
| correct output |
|---|
| 2 2 1 |
| user output |
|---|
| 2 2 1 |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 4 9 9 6 3 10 10 8 7 |
| correct output |
|---|
| 2 4 1 |
| user output |
|---|
| 2 4 1 |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 5 3 2 9 6 2 5 10 10 9 3 |
| correct output |
|---|
| 4 5 1 4 3 |
| user output |
|---|
| 4 5 1 4 3 |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 6 2 5 2 3 7 1 10 10 4 10 9 2 |
| correct output |
|---|
| 3 6 3 5 |
| user output |
|---|
| 3 6 3 5 |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 7 2 4 4 4 4 6 2 6 10 9 6 5 10 8 |
| correct output |
|---|
| 2 5 6 |
| user output |
|---|
| 2 5 6 |
Test 8
Verdict: ACCEPTED
| 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 2 7 |
Test 9
Verdict: ACCEPTED
| 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 1 7 2 4 3 |
Test 10
Verdict: ACCEPTED
| 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 3 6 4 |
Test 11
Verdict: ACCEPTED
| 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 3 2 5 4 |
Test 12
Verdict: ACCEPTED
| 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 6 9 10 8 3 |
Test 13
Verdict: ACCEPTED
| 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 8 1 5 6 |
Test 14
Verdict: ACCEPTED
| 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 9 6 3 |
Test 15
Verdict: ACCEPTED
| input |
|---|
| 100 822996947 734489027 192088037 ... |
| correct output |
|---|
| 12 91 79 84 15 7 86 24 59 65 61 4... |
| user output |
|---|
| 12 91 79 84 15 7 86 24 59 65 61 4... |
Test 16
Verdict: ACCEPTED
| input |
|---|
| 1000 111735663 297257984 561742368 ... |
| correct output |
|---|
| 32 358 507 775 556 630 679 280 25... |
| user output |
|---|
| 32 358 507 775 556 630 679 280 25... Truncated |
Test 17
Verdict: ACCEPTED
| input |
|---|
| 10000 316394141 195182398 569713189 ... |
| correct output |
|---|
| 112 1134 6761 4604 3840 20 7490 92... |
| user output |
|---|
| 112 1134 6761 4604 3840 20 7490 92... Truncated |
Test 18
Verdict: ACCEPTED
| input |
|---|
| 100000 457164810 81615942 542726432 3... |
| correct output |
|---|
| 363 9442 43192 86004 46207 95417 2... |
| user output |
|---|
| 363 9442 43192 86004 46207 95417 2... Truncated |
