| Task: | Poistot |
| Sender: | Pikaksi |
| Submission time: | 2025-01-18 14:03:13 +0200 |
| Language: | C++ (C++20) |
| Status: | READY |
| Result: | 100 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 11 |
| #2 | ACCEPTED | 25 |
| #3 | ACCEPTED | 64 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | 1, 3 | details |
| #2 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #3 | ACCEPTED | 0.00 s | 1, 3 | details |
| #4 | ACCEPTED | 0.00 s | 1, 3 | details |
| #5 | ACCEPTED | 0.15 s | 2, 3 | details |
| #6 | ACCEPTED | 0.11 s | 2, 3 | details |
| #7 | ACCEPTED | 0.11 s | 3 | details |
| #8 | ACCEPTED | 0.09 s | 3 | details |
| #9 | ACCEPTED | 0.14 s | 3 | details |
| #10 | ACCEPTED | 0.11 s | 3 | details |
Compiler report
input/code.cpp: In function 'void solve()':
input/code.cpp:70:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
70 | for (int i = 0; i < ans.size(); i++) {
| ~~^~~~~~~~~~~~Code
#include <bits/stdc++.h>
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
typedef long long ll;
// chmod u+x b.sh
void solve(); int main() {
ios_base::sync_with_stdio(0); cout.tie(0);
solve();
}
const int N = 1 << 18;
pair<int, int> seg[N * 2];
void segset(int val, int loc)
{
seg[loc + N] = {val, -loc};
loc += N;
for (loc /= 2; loc >= 1; loc /= 2) {
seg[loc] = max(seg[loc * 2], seg[loc * 2 + 1]);
}
}
pair<int, int> segget(int l, int r)
{
pair<int, int> ans = {0, 0};
l += N;
r += N;
while (l <= r) {
if (l % 2 == 1) ans = max(ans, seg[l++]);
if (r % 2 == 0) ans = max(ans, seg[r--]);
l /= 2;
r /= 2;
}
ans.second *= -1;
return ans;
}
void solve()
{
int n;
cin >> n;
vector<int> vals;
for (int i = 0; i < n; i++) {
int a;
cin >> a;
vals.push_back(a);
segset(a, i);
}
int remain = n;
vector<vector<int>> ans;
while (remain > 0) {
//cout << "removing" << endl;
int r = n - 1;
vector<int> remove;
while (r >= 0) {
auto [val, loc] = segget(0, r);
//cout << "loop " << val << " " << loc << endl;
if (val == 0) break;
segset(0, loc);
remove.push_back(val);
r = loc - 1;
remain--;
}
if (remove.size() == 0) break;
ans.push_back(remove);
}
cout << ans.size() << "\n";
for (int i = 0; i < ans.size(); i++) {
for (int k = ans[i].size() - 1; k >= 0; k--) cout << ans[i][k] << " ";
cout << "\n";
}
}Test details
Test 1
Group: 1, 3
Verdict: ACCEPTED
| input |
|---|
| 1000 447773962 773442532 122816 137... |
| correct output |
|---|
| 53 447773962 773442532 908719430 ... |
| user output |
|---|
| 53 447773962 773442532 908719430 ... Truncated |
Test 2
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| 1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 1000 1 1 1 1 ... |
| user output |
|---|
| 1000 1 1 1 1 ... Truncated |
Test 3
Group: 1, 3
Verdict: ACCEPTED
| input |
|---|
| 1000 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| correct output |
|---|
| 1 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| user output |
|---|
| 1 1 2 3 4 5 6 7 8 9 10 11 12 13 ... Truncated |
Test 4
Group: 1, 3
Verdict: ACCEPTED
| input |
|---|
| 1000 1000 999 998 997 996 995 994 9... |
| correct output |
|---|
| 1000 1000 999 998 997 ... |
| user output |
|---|
| 1000 1000 999 998 997 ... Truncated |
Test 5
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| 200000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 200000 1 1 1 1 ... |
| user output |
|---|
| 200000 1 1 1 1 ... Truncated |
Test 6
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| 200000 5 2 1 10 6 10 5 5 5 4 4 2 3 7 ... |
| correct output |
|---|
| 20776 5 10 2 6 10 1 5 7 9 10 5 7 8 9 10 ... |
| user output |
|---|
| 20776 5 10 2 6 10 1 5 7 9 10 5 7 8 9 10 ... Truncated |
Test 7
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 200000 591414747 75940263 760367935 9... |
| correct output |
|---|
| 879 591414747 760367935 901888417 ... |
| user output |
|---|
| 879 591414747 760367935 901888417 ... Truncated |
Test 8
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 200000 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| correct output |
|---|
| 1 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| user output |
|---|
| 1 1 2 3 4 5 6 7 8 9 10 11 12 13 ... Truncated |
Test 9
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 199999 199998 199997 19... |
| correct output |
|---|
| 200000 200000 199999 199998 199997 ... |
| user output |
|---|
| 200000 200000 199999 199998 199997 ... Truncated |
Test 10
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 200000 199999 199997 199995 199993 19... |
| correct output |
|---|
| 100000 199999 200000 199997 199998 199995 199996 199993 199994 ... |
| user output |
|---|
| 100000 199999 200000 199997 199998 199995 199996 199993 199994 ... Truncated |
