mirror of
https://git.sb/baoshuo/OI-codes.git
synced 2024-12-24 03:31:59 +00:00
P7912 [CSP-J 2021] 小熊的果篮(民间数据)
R61169043
This commit is contained in:
parent
d0f33ab731
commit
d177b091d5
62
Luogu/problem/P7912/P7912.cpp
Normal file
62
Luogu/problem/P7912/P7912.cpp
Normal file
@ -0,0 +1,62 @@
|
||||
#include <bits/stdc++.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
struct node {
|
||||
int start, end;
|
||||
bool value;
|
||||
|
||||
node()
|
||||
: start(-1), end(-1), value(false) {}
|
||||
node(int _start, int _end, bool _value)
|
||||
: start(_start), end(_end), value(_value) {}
|
||||
};
|
||||
|
||||
int n, cnt;
|
||||
bool a[200005], used[200005];
|
||||
queue<node> q, q2;
|
||||
|
||||
int main() {
|
||||
cin >> n;
|
||||
for (int i = 1; i <= n; i++) {
|
||||
cin >> a[i];
|
||||
}
|
||||
a[n + 1] = !a[n];
|
||||
for (int i = 2, t = 1; i <= n + 1; i++) {
|
||||
if (a[i] != a[i - 1]) {
|
||||
q.push(node(t, i - 1, a[i - 1]));
|
||||
t = i;
|
||||
}
|
||||
}
|
||||
cnt = n;
|
||||
while (cnt) {
|
||||
while (!q.empty()) {
|
||||
auto t = q.front();
|
||||
q.pop();
|
||||
while (used[t.start] && t.start <= t.end) t.start++;
|
||||
if (t.start > t.end) continue;
|
||||
cout << t.start << ' ';
|
||||
cnt--;
|
||||
used[t.start] = true;
|
||||
if (t.start == t.end) continue;
|
||||
t.start++;
|
||||
q2.push(t);
|
||||
}
|
||||
while (!q2.empty()) {
|
||||
auto t = q2.front();
|
||||
q2.pop();
|
||||
while (!q2.empty()) {
|
||||
auto x = q2.front();
|
||||
if (x.value == t.value) {
|
||||
t.end = x.end;
|
||||
q2.pop();
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
q.push(t);
|
||||
}
|
||||
cout << endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user