Ən böyük zəncir#6784

Ən böyük zəncir

60 saniyə
256 meqabayt
Çox asan

Üçlülər \mathbf{a} = (x_a, y_a, z_a) və \mathbf{b} = (x_b, y_b, z_b) üzərində qismən sıralama belə müəyyənləşdirilir:

Əgər x_a < x_b, y_a < y_b və z_a < z_b isə \mathbf{a} \prec \mathbf{b}.

Verilən üçlü dəstində ən uzun ciddi artan ardıcıllığın uzunluğunu tapın: \mathbf{a}_1 \prec \mathbf{a}_2 \prec \dotsb \prec \mathbf{a}_k.

Giriş

Giriş bir neçə datasetdən ibarətdir. Hər dataset üçlü dəstini aşağıdakı formatda təsvir edir:

- m~n~A~B - x_1~y_1~z_1 - x_2~y_2~z_2 - - x_m~y_m~z_m

Birinci sətrdə dörd tam ədəd var: , , , . Bütün x_i, y_i, z_i (1 \le i \le m) qeyri-mənfi tam ədədlərdir.

Hər datasetdə ümumilikdə m + n üçlü olur. İlk üçlü \mathbf{p}_1-dən \mathbf{p}_m-ə qədər açıq şəkildə verilir (\mathbf{p}_i = (x_i, y_i, z_i)). Qalan üçlü isə və parametrlərindən istifadə etməklə aşağıdakı kimi yaradılır:

int a = A, b = B, C = ~(1<<31), M = (1<<16)-1;
int r() {
    a = 36969 * (a & M) + (a >> 16);
    b = 18000 * (b & M) + (b >> 16);
    return (C & ((a << 16) + b)) % 1000000;
}

funksiyasını dəfə çağırın ki, aşağıdakı ardıcıllıqla ədədlər alınsın:

x_{m+1},~y_{m+1},~z_{m+1},~x_{m+2},~y_{m+2},~z_{m+2},~\dotsc,~x_{m+n},~y_{m+n},~z_{m+n}.

Aşağıdakıları qəbul edin:

1 \le m+n \le 3 \times 10^5,\\ 1 \le A,~B \le 2^{16},\\ 0 \le x_k,~y_k,~z_k < 10^6\quad \text{üçün}\ 1 \le k \le m+n.

Giriş dörd sıfırdan ibarət sətrlə bitir.

Bütün datasetlər üzrə m+n cəmi 2 \times 10^6-dan çox olmur.

Çıxış

Hər dataset üçün verilmiş dəstdə ən uzun ciddi artan ardıcıllığın uzunluğunu çıxarın — yəni, \mathbf{p}_{i_1} \prec \mathbf{p}_{i_2} \prec \dotsb \prec \mathbf{p}_{i_k} maksimal üçün cavabı verin.

Nümunələr

Nümunə 1

Loading
Loading