Submission #1226282

#TimeUsernameProblemLanguageResultExecution timeMemory
1226282kaiboyEditor (BOI15_edi)C++20
35 / 100
3096 ms6244 KiB
#include <algorithm>
#include <iostream>

using namespace std;

const int N = 300000;

int aa[N], dd[N], pp[N];
bool used[N];

int main() {
	ios_base::sync_with_stdio(false), cin.tie(NULL);
	int n; cin >> n;
	for (int i = 0; i < n; i++) {
		int a; cin >> a;
		used[i] = true;
		if (a > 0)
			aa[i] = a;
		else {
			dd[i] = a * -1;
			int p = i - 1;
			while (!used[p] || dd[p] >= dd[i])
				p--;
			pp[i] = p;
			int j = i;
			while (dd[j])
				j = pp[j], used[j] = !used[j];
		}
		int j = i;
		while (j >= 0 && (dd[j] || !used[j]))
			j--;
		cout << (j >= 0 ? aa[j] : 0) << '\n';
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...