CSES - Aalto Competitive Programming 2024 - wk12 - Wed - Results
Submission details
Task:Concentric Tubes
Sender:Rasse
Submission time:2024-11-27 17:43:33 +0200
Language:C++ (C++17)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.00 sdetails
#7ACCEPTED0.00 sdetails
#8ACCEPTED0.00 sdetails
#9ACCEPTED0.00 sdetails
#10ACCEPTED0.00 sdetails
#11ACCEPTED0.00 sdetails
#12ACCEPTED0.00 sdetails
#13ACCEPTED0.00 sdetails
#14ACCEPTED0.00 sdetails
#15ACCEPTED0.00 sdetails
#16ACCEPTED0.00 sdetails
#17ACCEPTED0.01 sdetails
#18ACCEPTED0.06 sdetails

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 long
using 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;
}
else
return (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

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: 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