Submission #540267

# Submission time Handle Problem Language Result Execution time Memory
540267 2022-03-19T18:35:00 Z Evang Editor (BOI15_edi) C++17
100 / 100
83 ms 7960 KB
#include <bits/extc++.h>
using namespace std;
using namespace __gnu_pbds;

#ifdef _DEBUG
#define dout(x) clog << "Line " << __LINE__ << ": " << #x << "=" << (x) << el
#else
#define dout(x)
#endif

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#define uid(a,b) uniform_int_distribution<int>(a,b)(rng)

#define ins insert
#define ssize(x) (int((x).size()))
#define bs(args...) binary_search(args)
#define lb(args...) lower_bound(args)
#define ub(args...) upper_bound(args)
#define all(x) (x).begin(),(x).end()
#define mp(a, b) make_pair(a, b)
#define mt(args...) make_tuple(args)
#define pb push_back
#define eb emplace_back
#define ff first
#define ss second
#define die exit(0)

template<typename T>
using vc = vector<T>;
template<typename T>
using uset = unordered_set<T>;
template<typename A, typename B>
using umap = unordered_map<A, B>;
template<typename T, typename Comp>
using pq = std::priority_queue<T, vc<T>, Comp>;
template<typename T>
using maxpq = pq<T, less<T>>;
template<typename T>
using minpq = pq<T, greater<T>>;
template<typename T>
using oset = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

using db = double;
using ld = long double;
using ll = long long;
using ull = unsigned long long;
using pi = pair<int, int>;
using pll = pair<ll, ll>;
using vi = vc<int>;
using vll = vc<ll>;
using vpi = vc<pi>;
using vpll = vc<pll>;
using str = string;

constexpr char el = '\n';
constexpr char sp = ' ';
constexpr int inf = 0x3f3f3f3f;
constexpr ll llinf = 0x3f3f3f3f3f3f3f3fLL;
// ---------------------------------------------------------------------


const int N = 3e5+5;
int n, a[N], ind[N], adj[N];
bitset<N> op;

signed main() {
    ios::sync_with_stdio(0); cin.tie(0);
    cout << fixed; clog << fixed; clog << unitbuf;
#ifdef _DEBUG
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    freopen("debug.txt", "w", stderr);
#else
    //freopen(".in", "r", stdin);
    //freopen(".out", "w", stdout);
#endif

    cin >> n;
    for(int i = 1; i <= n; ++i){
        cin >> a[i];
        if(a[i]<0) {
            op[i] = 1;
            a[i] = abs(a[i]);
            int j = i-1;
            while(op[j]&&a[j]>=a[i])
                j = adj[j];
            ind[i] = j-1;

            adj[i] = ind[i];
            while(op[adj[i]]&&a[adj[i]]>=a[i])
                adj[i] = adj[adj[i]];
        }else
            adj[i] = ind[i] = i;
    }

    for(int i = 0; i < 20; ++i)
        for(int j = n; j > 0; --j)
            ind[j] = ind[ind[j]];

    for(int i = 1; i <= n; ++i)
        cout << a[ind[i]] << el;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 2 ms 348 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 2 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 344 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 2 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 58 ms 7176 KB Output is correct
2 Correct 57 ms 7284 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 29 ms 3868 KB Output is correct
2 Correct 34 ms 4556 KB Output is correct
3 Correct 45 ms 5164 KB Output is correct
4 Correct 68 ms 7168 KB Output is correct
5 Correct 63 ms 7960 KB Output is correct
6 Correct 42 ms 5196 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 2 ms 348 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 2 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 344 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 2 ms 340 KB Output is correct
10 Correct 58 ms 7176 KB Output is correct
11 Correct 57 ms 7284 KB Output is correct
12 Correct 29 ms 3868 KB Output is correct
13 Correct 34 ms 4556 KB Output is correct
14 Correct 45 ms 5164 KB Output is correct
15 Correct 68 ms 7168 KB Output is correct
16 Correct 63 ms 7960 KB Output is correct
17 Correct 42 ms 5196 KB Output is correct
18 Correct 62 ms 7876 KB Output is correct
19 Correct 59 ms 7688 KB Output is correct
20 Correct 70 ms 6400 KB Output is correct
21 Correct 59 ms 7264 KB Output is correct
22 Correct 83 ms 7912 KB Output is correct