Task: | Concentric Tubes |
Sender: | Rasse |
Submission time: | 2024-11-27 17:43:33 +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.00 s | details |
#17 | ACCEPTED | 0.01 s | details |
#18 | ACCEPTED | 0.06 s | details |
Compiler report
input/code.cpp: In function 'void solve()': input/code.cpp:57:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare] 57 | if (mIdx != rads.size() && c_next[mIdx].first+1 > c_next[i+1].first) | ~~~~~^~~~~~~~~~~~~~
Code
#include <bits/stdc++.h>#define int long longusing namespace std;int p(int base, int power, int mod){if (power == 0)return 1;if (power % 2 == 0){int r = p(base, power/2, mod);return (r*r) % mod;}elsereturn (p(base, power-1, mod)*base) % mod;}int LCM(int a, int b){return (a / __gcd(a, b)) * b;}int mod = 1e9+7;void solve(){int n;cin >> n;vector<int> originalBigger(n);vector<pair<int, int>> rads(n);for (int i = 0; i < n; i++){int a;cin >> a;rads[i].first = a;}for (int i = 0; i < n; i++){int a;cin >> a;originalBigger[i] = a;rads[i].second = i;}std::sort(rads.begin(), rads.end());vector<pair<int, int>> c_next(n+1);c_next[n] = {0, 0};for (int i = n-1; i >= 0; i--){int mIdx = (int)(lower_bound(rads.begin(), rads.end(), pair<int, int>{originalBigger[rads[i].second], 0}) - rads.begin());if (mIdx != rads.size() && c_next[mIdx].first+1 > c_next[i+1].first){c_next[i] = {c_next[mIdx].first+1, mIdx};}else{c_next[i] = {c_next[i+1].first, i+1};if (c_next[i].first == 0)c_next[i] = {1, -1};}}cout << c_next[0].first << '\n';int i = 0;while(i != -1 && i < n+1){if (c_next[i].first > c_next[i+1].first)cout << rads[i].second+1 << ' ';i = c_next[i].second;}}signed main(){ios::sync_with_stdio(0);cin.tie(0);int t = 1;//cin >> t;for (int i = 0; i < t; i++){solve();//cout.flush();}}
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 2 |
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 3 2 |
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 8 |
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 9 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 5 |
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 7 |
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 3 2 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 5395 7611 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 60910 25800 86004 98028 40484 ... Truncated |