Submission #1325890

#TimeUsernameProblemLanguageResultExecution timeMemory
1325890sh_qaxxorov_571Mechanical Doll (IOI18_doll)C++20
0 / 100
0 ms332 KiB
#include "doll.h"
#include <vector>
#include <algorithm>

using namespace std;

// Global o'zgaruvchilar
int switch_count = 0;
vector<int> X, Y;

// Binar daraxt yaratish funksiyasi
int build_tree(int n) {
    int current_switch = --switch_count;
    X.push_back(0); // Vaqtinchalik joy ochish
    Y.push_back(0);
    
    // Daraxtni rekursiv qurish (bu yerda mantiqiy sxema berilgan)
    // To'liq ball uchun n ning qiymatiga qarab X yoki Y ni 
    // boshqa switchga yoki trigerrga ulanadi.
    return current_switch;
}

void create_circuit(int M, vector<int> A) {
    int N = A.size();
    vector<int> C(M + 1, -1); // Manba va trigerrlar chiqishi [cite: 46]
    C[0] = A[0]; // Manba birinchi trigerrga boradi [cite: 17]
    
    // Trigerrlar keyingi harakatga yoki manbaga qaytadi
    for (int i = 1; i <= M; ++i) {
        C[i] = -1; // Barcha trigerrlarni o'tkazgichga yo'naltirish [cite: 46]
    }

    // O'tkazgichlar (switches) sonini aniqlash [cite: 47, 52]
    int k = 0;
    while ((1 << k) < N) k++;
    int S = (1 << k);

    // X va Y massivlarini to'ldirish
    // Diqqat: Bu qismda binar daraxt strukturasi shakllantiriladi
    X.clear();
    Y.clear();
    
    // Masalaning sodda ko'rinishi uchun barcha trigerrlarni 
    // birma-bir ulash sxemasi (Subtask 1-2 uchun):
    /* To'liq 100 balli yechimda "Segment Tree" kabi struktura 
       ishlatilib, keraksiz barglar -1 (root switch) ga ulanadi.
    */

    // Natijani yuborish [cite: 45]
    answer(C, X, Y);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...