제출 #152947

#제출 시각아이디문제언어결과실행 시간메모리
152947Ruxandra985popa (BOI18_popa)C++14
0 / 100
20 ms436 KiB
#include <cstdio> #include "popa.h" /// cum adc runtime:( int solve (int n , int *l , int *r){ /// return root int i,lant,root,bgn,ed,eda; int tt[1010]; for (i=0;i<n;i++){ tt[i] = l[i] = r[i] = -1; /// reset all } /// separam in lanturi lant = 1; bgn = ed = 0; eda = -1; /// cel de care poti lipi for (i=1;i<n;i++){ /// n - 1 if (query(bgn , i , i , i)){ /// i apartine lantului curent ed = i; tt[i-1] = i; } else { /// incepem alt lant if ( lant != 1 ){ /// vedem cum il unim if (query(eda , ed , eda , eda)){ tt[ed] = eda; /// unesti intervalele astea } else { /// daca nu pot cu aia , il fac pe ed[i] radacina tt[root] = ed; root = ed; ed--; } } else root = ed; lant++; eda = ed; bgn = ed = i; } } if ( lant != 1 ){ /// vedem cum il unim if (query(eda , ed , eda , eda)){ tt[ed] = eda; /// unesti intervalele astea } else { /// daca nu pot cu aia , il fac pe ed[i] radacina tt[root] = ed; root = ed; ed--; } } else root = ed; /// uniunile dintre lanturi se fac clar la nivelul lui ed /// pentru ca au indici consecutivi in s for (i=0;i<n;i++){ if (tt[i]!=-1){ if (l[tt[i]]==-1) l[tt[i]] = i; else r[tt[i]] = i; } } return root; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...