From 03a2d4452558fe066578526cbd326c95d30560af Mon Sep 17 00:00:00 2001 From: Barinov Egor Date: Sat, 30 May 2026 13:52:54 +0300 Subject: [PATCH 01/10] T2 --- barinov.egor/T2/t2.cpp | 262 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 262 insertions(+) create mode 100644 barinov.egor/T2/t2.cpp diff --git a/barinov.egor/T2/t2.cpp b/barinov.egor/T2/t2.cpp new file mode 100644 index 00000000..77d0be67 --- /dev/null +++ b/barinov.egor/T2/t2.cpp @@ -0,0 +1,262 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace barinov +{ + struct DelimiterIO + { + char expected; + }; + + struct LongLongIO + { + long long& value; + }; + + struct RationalIO + { + std::pair& value; + }; + + struct StringIO + { + std::string& value; + }; + + std::istream& operator>>(std::istream& in, DelimiterIO&& dest) + { + std::istream::sentry sentry(in); + if (!sentry) + { + return in; + } + char c = '\0'; + in >> c; + if (in && c != dest.expected) + { + in.setstate(std::ios::failbit); + } + return in; + } + + std::istream& operator>>(std::istream& in, LongLongIO&& dest) + { + std::istream::sentry sentry(in); + if (!sentry) + { + return in; + } + long long value = 0; + in >> value; + if (!in) + { + return in; + } + char c1 = '\0', c2 = '\0'; + if (in.get(c1) && in.get(c2)) + { + if ((c1 == 'L' || c1 == 'l') && (c2 == 'L' || c2 == 'l')) + { + dest.value = value; + return in; + } + } + in.setstate(std::ios::failbit); + return in; + } + + std::istream& operator>>(std::istream& in, RationalIO&& dest) + { + std::istream::sentry sentry(in); + if (!sentry) + { + return in; + } + in >> DelimiterIO{ '(' }; + in >> DelimiterIO{ ':' }; + std::string label; + in >> label; + if (label != "N") + { + in.setstate(std::ios::failbit); + return in; + } + long long numerator = 0; + in >> numerator; + in >> DelimiterIO{ ':' }; + in >> label; + if (label != "D") + { + in.setstate(std::ios::failbit); + return in; + } + unsigned long long denominator = 0; + in >> denominator; + in >> DelimiterIO{ ':' }; + in >> DelimiterIO{ ')' }; + if (denominator == 0) + { + in.setstate(std::ios::failbit); + return in; + } + dest.value = { numerator, denominator }; + return in; + } + + std::istream& operator>>(std::istream& in, StringIO&& dest) + { + std::istream::sentry sentry(in); + if (!sentry) + { + return in; + } + in >> DelimiterIO{ '"' }; + std::getline(in, dest.value, '"'); + return in; + } + + class IofGuard + { + public: + IofGuard(std::basic_ios& s) : s_(s), + fill_(s.fill()), + precision_(s.precision()), + fmt_(s.flags()) + { + } + ~IofGuard() + { + s_.fill(fill_); + s_.precision(precision_); + s_.flags(fmt_); + } + private: + std::basic_ios& s_; + char fill_; + std::streamsize precision_; + std::basic_ios::fmtflags fmt_; + }; + + struct DataStruct + { + long long key1; + std::pair key2; + std::string key3; + }; + + struct DataStructComparator + { + bool operator()(const DataStruct& a, const DataStruct& b) const + { + if (a.key1 != b.key1) + { + return a.key1 < b.key1; + } + double valA = static_cast(a.key2.first) / static_cast(a.key2.second); + double valB = static_cast(b.key2.first) / static_cast(b.key2.second); + if (std::fabs(valA - valB) > 1e-10) + { + return valA < valB; + } + return a.key3.length() < b.key3.length(); + } + }; + + std::istream& operator>>(std::istream& in, DataStruct& dest) + { + std::istream::sentry sentry(in); + if (!sentry) + { + return in; + } + DataStruct temp; + bool hasKey1 = false; + bool hasKey2 = false; + bool hasKey3 = false; + in >> DelimiterIO{ '(' }; + in >> DelimiterIO{ ':' }; + while (in && (!hasKey1 || !hasKey2 || !hasKey3)) + { + std::string label; + in >> label; + if (label == "key1" && !hasKey1) + { + in >> LongLongIO{ temp.key1 }; + in >> DelimiterIO{ ':' }; + hasKey1 = true; + } + else if (label == "key2" && !hasKey2) + { + in >> RationalIO{ temp.key2 }; + in >> DelimiterIO{ ':' }; + hasKey2 = true; + } + else if (label == "key3" && !hasKey3) + { + in >> StringIO{ temp.key3 }; + in >> DelimiterIO{ ':' }; + hasKey3 = true; + } + else + { + in.setstate(std::ios::failbit); + return in; + } + } + in >> DelimiterIO{ ')' }; + if (in && hasKey1 && hasKey2 && hasKey3) + { + dest = temp; + } + else + { + in.setstate(std::ios::failbit); + } + return in; + } + + std::ostream& operator<<(std::ostream& out, const DataStruct& src) + { + std::ostream::sentry sentry(out); + if (!sentry) + { + return out; + } + IofGuard guard(out); + out << "(:key1 " << src.key1 << "ll"; + out << ":key2 (:N " << src.key2.first << ":D " << src.key2.second << ":)"; + out << ":key3 \"" << src.key3 << "\":)"; + return out; + } +} + +int main() +{ + using barinov::DataStruct; + using barinov::DataStructComparator; + + std::vector data; + + std::copy( + std::istream_iterator(std::cin), + std::istream_iterator(), + std::back_inserter(data) + ); + + std::sort(data.begin(), data.end(), DataStructComparator()); + + std::copy( + data.begin(), + data.end(), + std::ostream_iterator(std::cout, "\n") + ); + + return 0; +} \ No newline at end of file From 4e7909fb4773165bbc545930cd03c57aaf807e85 Mon Sep 17 00:00:00 2001 From: Barinov Egor Date: Sat, 30 May 2026 13:58:42 +0300 Subject: [PATCH 02/10] barinov.egor/T2 --- barinov.egor/T2/t2 | Bin 0 -> 102416 bytes barinov.egor/T2/t2.cpp | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100755 barinov.egor/T2/t2 diff --git a/barinov.egor/T2/t2 b/barinov.egor/T2/t2 new file mode 100755 index 0000000000000000000000000000000000000000..8abf5d2fbcac4e1ef2b746d61af69baa2207df80 GIT binary patch literal 102416 zcmeIb3wWGWwLkn$l0piF8E%T8FhGG86esDuMM!C1ozMnC+X!--q)FNa(j??kS|l=% z1~VOkIS5(~UUK+*=}|60E>=9$6lxOzVFZ+@_&JLH+0h=E0|-UYe!sQ$dT(<{)1>&F z=lLe>ds+Lk_S$Q&z1G^dcb@;-fB*AP!|)XvhEag)C|olRF^ul$DR?uC58(>qibN_G zf6BbvTyZgldjEW0Fe^lOHllz?WR-c@DsK|bAN7VA0#89OU7(TwB9Zp`jqL*9k&dq~ zfXX0z+FG54;36kE0Z}&?iL|wMtZuV|((!%edW~13jI30%@Kgr!z#P8d7hkkeOJ7vi(T23+oPc!tMs{lYiX{obL{qLms;AZ;%gZlXW-cw) z+()R7d20+>IW>WSJ`EG3Lo|FUS}4S?K7-0GMlA6!g=aM?QCW;|F!{10eMS#p;?ME8 z!XNY*Z9vo#@)`XR!#EsamAL3{2EyqAZsS5cXL4xv+s1Qz#^wy_`r7KfjQ-+2n*suv4-J4%s2!Wy)!S1 zYYNW7JIS5(Hv{!2JjpYx5dEZbi7yn#GU2-wD0~hrpr`iiv(G6x2ShcjW;*A)();Rs zP_N$fD>t>Z*RMb40?C5ZhC#&=J;~#I#$_Osct!Ah@YhWzg7SZP4&*tI=RlqVc@E?` zkmo?219=XNn*&wh*dN1PdqO2IgkznlaI8ax;~lARZ)Z|}4e0t`y1? z3cwK$fgcGHIgbcAk8~w{U3(4xW@5Tp3*@8g@dgUj)gX#mtH(F`0fz`RkJ6k*sXvA{ z=D3ZYDHu}MAa<0S@-WJ%8>RZHr?>(?z&Ol*IGQgUtJID_&W!)4!Pp`SH#@>IVqYLW*q3^uF&ud8wi0zOKq4ILUI(S1UZ(KgitVh>x~mZsj`dzfG5^hK z0@4zHl;IaqpzfNzo!i5`bFP9?RC|kDvQiF8nV&YRna?EA0m!A!ER8c{ZUcT}w3bSV znFFz^`%s(h>Sr|wtfRmovmXg8IqO%?Q;Zd|+uTak*s4AV`t4AJY*%Ne(fNJ!c2()7 zb2g)ekYv)i?mZiw79xwzA5xwnv(F*`MfIr*yd?DyNj+-wyEYEucXTE~qpHac?dt3^ z{M};^@hVz0E3@Vj5xq~eP%HIz^oM(^`qZ~DM+2rq_UDItAEhYu6bHdv#VYm+{mk2r zYEHU0eDf|6D%NWQ>UR;+WZCrBJ?L9n4Y}o!SdiP~oJM7k$vF@8wYA8%L>$%L4+{x4 z>q$Cpfii^DgI{VbmuBN`<2Lc|%o6VdU=w!QDKz8#mDn;xjQ5R%d zU_h_K%l-^#kNP&q5mG!g2c@qdDrRmLx;9$|lvt?FAdZ}gqCu+q2&n5ZABMUZ^zW#8 zc!yDj6c3=~ddx1)y~XUZsb_Op#jNg3`FC_YtO}6bB4IeZZxFQ^&g9$G%=PY#5Lik4 z1ih;@2deMv<6pBF7n*R^wq)c~=%EpH$6MOCXd7Je_^C_?+~dy@9&$3EiJ1B9 z2ML`IZY}YXQs2Y8XXoOV9 zs&;`7!|E4Ex}`#~Z;K}N`nG5v@@==NX(%%Xfs2`(Z*Xkf{D##vAEWBWfqe9@RASs5 z2~Q!G0Nn`aRqdBkpL}YI`ILXhUi7`!)jEXOM6*zbIVX3`r_@?RTTDo)v(b&H9f5AE zI*HgAuh<%fm(tB%3RM>!O6kt=AJiMWI!Em8X2nW(BW9=<2|stYpWrRMyMYr!>JUg& zhL7FCeQj7(ea7xH%^l6-kKMc{feK~uhrWZXEV4g-Ba6u1OD3@w?fZSa>^2|7 z^#HE>x&FJ&ZR8|vQ&0bot>Wi;MAy6>2q}%WCKU)jM|&D~rz8$6^^Gnhnqp>utm-SHr=c8q2j8RW-Ah5tkrb$jnL)%{=q84C z0}wa--KIkf%r*O|D3IM%1zy_%yqo=1B8L1{HO(RB0pI90LZZte4X*wl5NC5wmvz6l ztYMUOnXWiJ)GKb+a(8#7RGglw|8=|K_xncYF~M0K$`3*s9l62m!cg~eAfR463az9Y zh!f}t1Tooa_|wohoVI(=-@V&TdLuk(R=(X~;DK-XC_RO+M=&zdhaakc!LM z!mlSNiGz+$AJ1tl|}FA9PBR0_Vmxl>@A*Jb1%FO z^&cfA!w`)DMqS32dN?bDezg=u!q&R&VSw!gjjz9pQF^+6it#bxq0(r!2X1Hs5I_!- zU<)qRbt9@2)q<`YAzin5DoWdJ?lVSbaix$1Hg!3Ymtck?JoF^^wom_%tLpQYimaj8AWGalf^ zgv|NJc#(de3eiY&_K#&#ISnT69Q||i9_;=whRpZCVbWfhe*qkh&pAZHrx3Gt7vYa}?}h&*^1|;3B1;tR)rH)o9h_}y z1HVAo5jVS2$ff54Vr(xUWE_;FRI%;&sedO4~WrtYl zoc7iB5;mF)A$*Q`JhldV(x&IL&7Wn*7qs;sNtH`z#)SLP_v!N|R}i9%`4g%?@S^RmfCaQTpxC?4yQzE`bf$T4h3xq-ho3xO1^*V#t!AlG^NA>Uu|41&d9bmU)m;(-dvJ3idqD8lCPsQ7q#C|8%r<>V)o46fCa-&k6L|lj!O;`Uw6`lTS_m41Y zLaT}-!+3`tbT_h9p0#!xE{;JCE8apULM5(x%Cbi#Z);XUVuz?)BP=tuJF)2YI8n|l zc#znPexi=W2zr0~X8E@#d{4zBLwXLoKcWuQkkns>)Ltsht52vspmRy@hK~;~3IjHk zzxy~!$-^DA(9ph1Dr4q*qo>$`NE&+@qf{7ukY9Pcf5!s#TTI*_6?tUZvv!G#(;pBG zvAF6fo8Q8}aM#8e#0ll!d^C{8O{|DlsKXZrV~c~M0Ugpc3^i;8y4xaM9}o9<2S*bnBfEd#;BD`*Kn_MD1?8=BSL`EE~pke+uf zDZ4d@EzeY!csSVgyD44o8veVUjQ$=w3ZAs(D`dBCFZn1~Q(%3OR38Oy=~EbYz_BHA zLe><;hbTRzF{PO%>ebjM)@_k}vjFp3&f>`$`WK?6waAmLGN z94;=L6E%~PcI~S4+CT8q)xPMd9{-2hNB0Nxmtu_|;7U(Jp3|V%Y?|{8Sn2LKx-F5*c!G98a4t!8*2_i?&u#(nu z(zhk)+p5N$l+I0QcC(aJCDq%Q<#g4@s!P1=c+l+Xz_$J-{*aHfSN)ohq0$fYlN1Q9 zk5N}e5yUcAc99n~49#j8-Rqu`RV2+him^IG&#kn<(?mxnB^v|BEH>oB3 zJ38NFw!dCx7`%f>CNrVu!vUCzH^a4W#E*UGw5qqd{$`ZE)-k zz{N86_K;(eMP7k_5l=_AM2!_hiSf?N_$`NVP;AGwC@T{Ie*q^p(iBE4`+N@Wh|OKmS zY4s<22Y>0G*l4xSzoX)x3x@r7+6E>&y}~bU4|JrIS_;vyH5Qp}($?x6dV%D~#6CjK zl@RI&T7=vMWYI5w*YZj70Bw@lzQ0C1`p3?9ec{@jI+24hi#)76FH;_F-qX)yxlJCq z-Ix%)<`b4)Cg?91iS?M@m+t?4yTXm=n%Yyx?8Hxa9tmcc)Vq6&3&vdA)H7H~i<$N+ z@96_5xodCG-;H&DwvpjN9%*kKWicmhij`U5!UY!;TLft5sb_gvuPygM&GcaS991Lm z1bez~f`C{SW&0Kem-4`;V;i#f0b36iIHKxrTy?L#h;3oDqy-5|mn<=la$b`1v9vN+P+Gr7pK}Nj*@?RHU)?ZB!HHX;?eVkdK@9^fAda)%J+YU`*^c(wjtxVD z{@ah$*#?nvdw3?i{fh0nWrxh|h$56p2g?8o8!-I0V-5&0N zmZ05gB?ZMY#bS}U-M_hn(5KNbWYQXsG5TSO!@N(d>Nd#FR#mhRf%hN~32>)j=~ngn z0`mWQu&TM4jH;HK2I~zxAXS47G90O0N>x{t@nn+>9yoN`u6QS1Oft>6_aqaQx zQ@_DD0i)nC_Vc>u6AQHymFD3%_Ln+;*L+zaOw-4f|3~=j`6f~r=-f~kG}5Zp%F)ty zLCYRve+;=@kPGays(M}PQ$5hiZr?vkOhOaa(lf&&)AVBhj|ab2>%9=YUg`?wi25V6 z7L|#zN4VS%gIPcqf(>;!c%r}4>14=czS?g0TuE$_YxIBs@lj4P0ct zRE?-cEa5vGO}Agnzs&K7)qXaAlWLVE{H$MO%0VUq!(D>`yZ1WdMV>#=)Okqybw6+GchQ@BV_y(I?>L4vaf7Y&aQN;YFpJ-L*DVsdy)xy?ji1|lI#&t|(5hf&B7FA_jqjge zA4topZ_xfz0+bU}vJ;)Aux)v9mzSvz#-cACBIF$o3tZ~k8XsBu+Tytw9PZD{s1b9G zk395eF_1R>AVQpN)|cQrjgj>hofK?3=Ku7h4koScwt8vT&V)`z$F8s!nwK*>p)YnT z@|Re3jsB2R(>w%eS6-d5)oVf>0SDgQ!7ck2bm-B#OYtm2hC*iSopcerV-{_m8p=i5L&48+c4QMh+@+2b@4P^Vf|)ZEtwBdHdRx@(jRA3F?V=;QSA zIlbzJ#Ol(}*QtM)bP&%TT3OZ(A=Xk^`U2JP^Z^SuvB7?b!19t zL?-O5{WL08^#@RpP!IhI10Jjv6N}1V!D$xmZj5-{9^}~iLik6Hl_fuCK1SCc9S8Mi+m*dMYd=>N?N5Lzmpw+hJcJBhMZHp0ss`5FzTj zR_=Q_w_fWn{TRFIp7n6B=Up^E9%f2)!``B(6xib7s8>GS{C|paq@{M&OQ}Di{=|Ep zN3oko)^|eiV-QdN35*!|DKKU#0?ydtgoy-@1R2>xFM73qMBT>BLrY)>eV>)$`%a34 zqO%~Q|7mG8Apw*^t6B7=^+%ScSAiqf`2*=+dI`!caH5|x`=6s9SYK1WB6cXn`!k%m z94~(*t!s%JJ7CZ{^Ijl9fUUI-!>YT6UBdx(xryK6w%YAz)i<3!g1IfJeZXYc+(o{u zb66IAY4sud^Q4|eK?_zS*`BZkSyZf7qPW7;dNlth(^;(jl=>yLmd9VQ+JowE+jHLa zm?mJhJ*@QTH_UGEsR!BuLN40pwFfn*Zs!3k?G1q|b{&s&*ozxbf6z&`gU$hRqBfJ% zfH3L>$?y~?Vf0bF(ZmVu69mDPyc$fiG#vUpjUl0aK2vwDC}kJ8^W4LX~(32gI zb!<6&_-(W)&iUY-6vQ(Oto3HmLzX-X{jj%J=*ETCbL_3vKkT^%bPx3?zb~CHLd=jI)>O6U)WS0@iE#5DYemS3ex*0e zP;*)Rr3`%0{9?O7dpCyFeOR93PDuKaP7~fbl{iHEHo7T_UY65D3vJxCroeWN`ofry zzeT1W!52*T1vwv5Vbufy=mwA)%-5)&a;KqE_L77^iapX}>zg3UJMn{L0vZp6BL`_T znuCG{W-N_-8yVdzR5h_&%3P|Yn2ChT( z`~e8vt*+%XQ0zyebnwd~tv0^`Twn5M7h%3qD+i~4+4C=me}1Fh9};z9&9do7+n&9k6GBHg1lar{dckh!3q6m3ngjR8k;V3hM4-_Km=oic*De;= z0kz_>r(XSq=7i8dv=;dm`|lWB98Kc+*dQsqGK*i-UPw2_dffIZ{Wm2m{nFkCWDl(R z>OMsEJs-MkBK4L1U*I2bTK$t~q0=G96W{F*InewpX81cG@7Nv2%QL)Ou^C%b!6gh+ zp5_-(nyGyk7;pQj<7!VLFaQT65K_6VcQHK06X$%937|76gv_=gwhy%P<@q= zR}AWTOz0Z17mmCV{UU=r{-l)vt94!S1!CZUS$>?>Me1bRmSrD*vVX<=K;2f1HQ#_L z5Ki#W-oMy7R{D@l3)8Q8uZNvrIHua}{4?tuRx?}qo!l%f#%#$F>J;V;nfKj_$C7Ev z#nB%^8zj-P=MMjfW?isrzA|mR=kD(|zj?fpREP8WDHJ@8Io&#qNb3E>A3+Y!Cxjb1 zxkYyn;i|=M8mC9Q+w(`He-*hYyc-8Aq@;_X#xF&kKNBv~gf6{i;0Z3+*DnY^F_>>!n zLaoh6nb<6~hjvc;c>H;8W60YW^K+K0#SOP|$&L@0w&FCbuCCqwUioAD%svC=Rj&rK z!9bGcBx%Aa3G$e<8>X&eQABla-l>DBW>oEj(x{H&kmW{Geo){zjlO+Q^-2}lLEyX0PPp`QncctK{sZlEw*0`;9AHGvCBUAe z9?^5us2L`E{*L)C$uz8v^rRbh(haH?DP2Q_C@|p6}Pib+Q^a0ydw4TfV zMz0~s7(rZu{BMTSl#W#&(uG;|jn;R-FaG#5BoO*I!v7wBTxQ+S`9(hk9C@06ez5c_ z`6tvJ$On!c#_oOWLV#FJj9m~QwyS9`vy6}%<+M+_{@x#K`-`NTXl#&DbzC%bHmwO%E}5*MczC;_bZt={QRgbA4_>TxCKKv}7u^%Y9)7WHq0QIWF;5uN zW+z0{?x*Vy5#?|?Xf*!-;?`(Ke~xSs6PUwSY|?wLrw4kzlbUBwDEv&>zf#bj-IPClVyk8 zv9-|SUNPl_2Z{-Eg4n)=ebn&^%#wW&84I&z#5DWPYE%)K=p?zuQI*0fuHfj=IC|7e zAZzqT*vAD8=PlfY1FuhNg9bx)^KOl<1L(-Z=!h~|cWq=>1eEpC8*eYWb}EpsCgk{T z$RYkO@GQT3K=4s2eKD7gYSUzf?()NU4%<8&4&RKKOE?w&+ivDcp;hkw0bF<^{0^r5 zv8q8kuEa$sq$x#4v^{*c9WQljsMyY|#a9? zZfvvq4Z6N9wU}llF+n-l%lLW`?c&qly90$GnYI3|QN=U9^qf0WM}MatVs$ zaEWvkUX8+MJA-J^LT;o#b&y*5(yM%;y9SUnW0b|07)SNKg@ZgbJ8rC+eHtZ#uLI!o z-q9c7J8jZmD z)@)|%dG(STJ8e*W+x#{@Y{He>&B(YlQ=@y}Z|OMbRS3GLQK-3}K>}u~a25%~a@hMt zKvjyn$jpCQE2goO)xUUOMbb4XIPC4DcUEXAxlSk;OQ8 z17Ny7i)%Zs|G_l}^Q7V*l-c&3#}hP;Lv6{u0$X?oC(p{-VPB#B;5}9QMw1}t4S!(D zbf__~N4*jDpA{~C)Bm~3fPcnE&OzuJ|LPal_-CA6%I{acQaB!bIU392G4-Q03h)8BT+afz`ETpbp+J(Zq?yL45;eIfkyAGvRz_n zuaKv`Fab4WzJw~GMm*d@^HrtPY#^gP)Zs)V5uwzH5^*>p@ZlOdM8mtjWDKm%Lz zSQ{_GS20a!cS^9HVjo?#!5Su`(yscAc4ulg!JVXzZbI zqNREoVU-)9P(unNsn(`bqfZ}V5M=q^#6PqIIwtv(m`|ZSWWY`;1T{h!wvnhGqXc~5 z$5ZNWF=uA;phwfGOZ^|rtkGwH$og4%bVGdCo#$eA-JZyjhsxipu6O5gJ4q_$&ckYl zZzvkVf;zed)EYlg|IVoIa?F>c)j0`=C!tr!9+^z1%URxkYLO1m@BHj{*Z<2h263H}78PK56ev;#o zK`wq##oiwCi~h}e27`)3{;t6UQ_=9>{D<40?Ml6#7aOcI8@*@t8@6ytA-_&@&{;&bnm5_Vj9G3;NA zKa{7by^I>2@zdLKy&X(#hfB*u|A+;c>daJXmFeL^6$G1b?p86d5f%Y=JQBE*h>kb| zf?+U^zM+eqoprijB*A2aV!iXT82#G);%pr|tRC9K61kPI-=&vWNW%IUk*1|j-A0MX z2qMu8ph2O1=ocg0FVGM11^DhuQ8)kQ`Aiblp5s8FyG9=t&Vc?&^*0Qld%DT5A0^7S z@T<-!0fd7{{5+lz{H^L3SHTY=JI0b-JAKfwUGEnAyKxc;q|o?Ps|BgL^|`nqGm2W; zXJvX~Rht><)!zdJmm>xVaHqbvRh1(U2erIsWvI(BX%08srH$T>en)L+`!e>PJNiJ{ z8}NMjs7v2(p)l!ExMsr8G~#+3m#2T)^IMn)`uh+Vz*9xe{EIc8>7LUW*Z1sB!oD`N z7XddsRm& z^{btBmO=GX0Q$&w)nGWjFdUm7j^9umj%_T)Gk|9RnU(s5E=H-Z;$^q_nnBg+?RZVy zjd7_qV&k1JixVBW*7MPx-_`M$N_V#>NFkGl_|GyaM)-6Hlr+5KaM=8G@n8E?s>?3d zNuF(ePS5W_sdOm)rQd~^uhx>yRO?yVq+0o3B$SqaBlOW6%DDDxg`D;#9hxSSbc@wDFyc*onlbEjZkY3Y(m)JA<60!Uin~sB=YzaQ0#9%Y_9p^%=QX$|FHGl ze9#WgV{!Sv?xWrgjn=iP7z;T8st$=k97$S=)y-_&085Y5^a_5x5~~dc&xkJ-|7gte z(MR8*MISAI_+A(Tpa3IU>ln8#Zr|xwhYe%j>D7E+&G$OKui^VTzF))lM!wV6hW4G_ z!uM9bxAT1i-#7C82EO0O_s{V?%J*CNzM1d0^1X-eTljt(-*4x8AK&lb`<;CM65qG- z{onci6~2Fs@BMtgm+#-;`?vVMjql&#`+ad{v6*Ee18FV!&u(?k)PpZ@ydOt&xAYDw~mGo11PolTE^mZ)0T|{q((OWaU8T1yTx3{4{*Zl{*k$zoAXT(Q;Pj4^L8-4O{ z9V%{&K1Xkg!gkTyJM{KA-XL}N%=DdPT!g!TuMWwd^)2~!f$>1Wl)o1E9xkYK z{hTYlq6bIOXml-^+zIDWK!S##I>Tod3;2V_U($6+TpG+;zxZK0x0&6sh*zbA)e7WuV*V z(?uZtvBsH(apo0Q8gbvf1W_gn#Vcf8QQtI+uO!V<%Hrf|w13w?<~ z6rn4l={m}|9TIqZf&Ui;##amIGd2`XWuH1N>@KS)PYMgRf$_R8hU!t7|16qz z%OS>=DfA5=uIq;nE3wl5@QIgy`P&z@D$s^!8Ma_0@Em9ajd+Hdke1@xQQ=Pgo6FPi>)d+{;+)}2;?`1N z_y(a&Lx&o^N*IP}{5*62;lP6#hs05aF9ja;9SuGn1N_G!4eUnQ@rJJ&gQ3)i4Br5F z6gt`P^|)&D8vMZXGEfDZ5`bP>wA65-%S zSqGYJyX}|XAs|XAh>_6eg-z_=LzzhE>HUA0;M}g;Q8_l;M)%rK3J-sL3s`= z&~QlNqxhx)rR&4DAn1947k!KL!#GvpN>xu71 z5KQ0Hpy%%;9bP?udnEjAD_+{^FnJy;&y(a?D$jG}=|PqU@*K!>AkTq32l5=qb0E)w zJO}a|$a5gifjkHD9LRGZ&w)G#@*K!>AkTq32l5=qb0E)wJO}a|$a5gifjkHD9LRGZ z&w)G#@*K!>AkTq32l5=qb0E)wJO}a|$a5gifjkHD9LRGZ&w)G#@*K!>AkTq32l5=q zb0E)wJO}a|$a5gifjkHP*K^>g(~Rnp3obK`DvLxezi4H9Noiw!)7tiRk^0uw=GLVp z<_6=ER-;d1XGJ0jt>K1xv{m$YcT<&=)UK;(jkLGcG_<#&F-l76 zuZuJ^wMVFNOw>Ob7(01;vy;5m)8-kdOOaNW#<<5!Tv~sfSvxkqS@q3pP@l2Ln_JV? z*08q8Tv5AX+1SYDYMC}G)6>n1EUg!I)-S)$JhNfD`cw>Eg{lx0BI%{3#MwmepLz$gD z2i~41iwoM>6JwKuHVfvp_3e!fO*tgTtA}bKNgh#ZNE4+65f-#kEog{rXj)s2 zG9hEDN=Vk`dIh<$t$h6QTDwYPpx*6OXh4%y?)O7|dPe~DthaNL@980}ISL({L-SZ{ z#)W7<)E_ACb(vYLb8C=w*Ldx)c6Hi}qv0!5HC+#T8(C4`*0H|c=rh`8X#YZNT#1*H z<7}gOq-JVb>&^A+(bP~&Mq9{(wloxpXzLk)pw&l^etmOO`SR5zrb%(_>sp(ykGTCC zvM@&5d=HknWL+EU7jyu_nwr}Bc9QH+L_0D@TiBC$enWE`7dDr=OLMJ8SgF&%uPJG4 zUJKRA&eW1pZGeonKA)9L4NW!e^{kqH<1mummXc%)#N@#ASmAqhOjsjN6NyJ;w!lWUCn+=D3ed!v5}q$VAYOWw2M$sD~I zkD-ni!yp^C7O;oo8u*#UJ%}tZ?kRYlVeI z-zkQ1NG{*Oc&%Wbad#2?8RLgjN{l^+lp3F(I@h@MaHC*cZpH5l54O|rg`&cu)TwB> z<;_iN>7u%H7pJoClNJ>?*bNpS>qflxqZ*y9FkR0?uYZ1&{?Cd{X3h# zKLoTc2TN198OaL6C`=pJ8Gkx7b69HZI_!NIe*X1Hqo~BVwOGdMyNl-iT^|7Yej$H19$hF*zO}NW0HM>CFi`{3m_x)P2y$WPP+F$ zPb3|TA^hl(2WiCq`jJINi5Hl}pVNKdmwbPP?x|NnZr>?`zF=QrD3mG)R;P-BeTRfX z)luI-QM5SN?~5X?C>W}&45kVxRWKAR3x)c9pkDmW3)&kFu06SdB!XO3qd}h#a91 zm4L!1tj||D-~-{6CVjhFhS8F&{&3l zEkPnJ2qXc+FnaJ^+~bWRV*uaFrRNWiG>jv`?@IZ;>$?IQ$LR08p6%E1A%Ry5oH$m; ze^KC+z|ROgDBp<7M+Ke^Iw`(i zzVo{nFyT*}uG8Nn@hO3y5_nL)WBVH`{S2M{q@#sCfd>VSo~7ewpx%UkK;Y{IhHt?1 z{WoBu$2eQV=YkKEJ}B_l1g;kNRe}2iKI1r@eo)}A3tatCjc@7)bbOz{7YaNeaI3(^ z$8`D!1r7+j2QbkW6nHAyh3Kmm_-uir0#^v!FK`23%AXMUR)LLkba_up`f7pyDR4sI zlaJTsr35}#;IfbF{MQLQDDXBby}&;P%=CwJ`rk@?RN$jOq~iw!J_|6_Z&2V11x^XP zM&Lk+#`mb?uNJrna!UF81YRKUfWRFBhvd7^Ul%wk@UH~!7x*2469S(AIVb!nffooI zoTcemFL0&6F@akIeoo*)fiJ`Nn;D6l>G(l`s|8L9 ze51fAfnO6iFh}FR@?@PqDDXE09u)XVfs+FJgOYx(&Ob}wkibm>_X!*m*qEo&f741Y zaM39mUzxxw1nw93KLs8X_#XnN1g?T!A^rvDYy964xKiK`K+jNoi@>)D92NL+f%^si zwZQP#SwEaGUFS~-yhh-Zz`F$wEYRuyBydRJOQFZ8{7QkpCUCXD&kNiq@Zr#Nl)hi! zPYIk9xKH4+g}S^y3S2GlqBEsGVW9zD3|lfrkZ- z3VhT|oqs^!O9eK{G`<@J4ha0bz%2rw3B60@_X$jTn&3f!9}+kz@QVVcto+ckl)iGY zE^nQ{EdoCza8lq`1WpOO9D0}X2QSe1|4ZPg!0!s&CvX^glhP*yeoWw$z^@5xEYbL8 zKu=Qokiee>O!_Y+@Ggn3T&mO4_vk5oi@+TM_X)g1-~oXPp$92_Qs8q1P6^yAaLCm7 ze=Bgcz@^ZGls_u)O#=4`{H(x(0-sr`)29U9AaL-L8vly|4+wk?^cd48@P7&%!1xx$ z8m|f*68Kc;C8kHd);4*>Fg&c5;6S-f{}+LS0$&8Z#OVco zK;WprMbIl0-zV@kfm<%r`26Vi)SmqUuLex%69T_1a7y4?(QhffWtqYD zN{#O!z?8pQ;1>k$6ZlPmlL9YWtn(X}==@s&b9)K=n!t$_I=&SBn98eMso_e2qXIVx zJRtCs0w)AM8vUB`8>@8w3k0qdc(uS$fnOH5U*G`xE#)5+xK7}tz=Hy(1g3sY^(m{; z<(+Rz`JdMCJpzXWeqG>dfy>Y@sk}aczbNpam0sY`r5fKQ=!cZPOyGwEZV`BozzKnm zMn9zVq04ms*#cJze6he$fv*ubA@B}?jnC-(C!ik^zM#PC1uhf#9f1=9$I$OM{pC9U zF9l8rJRALr;*$b@Mc~jCI{n4yHxyqf@QA?u0?$N0q4)uTI{;IAqy)Z8;NX=S-=mVg zMc{u3+%K?+enj|E0{=>2<0_qhCi(@%2L#>(n92(Zyi4Ny1wID-fYK)fUL$beYK`y5 z0+$JV0r~}{9~AgY0;dH26JRPY5YhS1MZaPB6Zm$4qXPd9Fyj+AgnmMBO5n8u2dg!{ zuL)cx@LvRO5%^5VJ>^fX)9JSZrt+iLYWNuR1By>vr{SvwZfVuAN_(PC$O5f6^ zZf1AJ|flq_nQhdL_Edmb;{0o6o0$&Nar1a4Z8sFCh9uW8?ffE9s3OS_oNrBr1 z4qdPF|EIu}0>2}0wZJCi?#Lqiyv+?d{iOo83)~>^Z35pY@UsGcLE!fUzE|K6e^%pr zRN#*aJS^~1fqyM{1WpRPM&OjdHwbKW>iXSI@L`5AvQxtaFnxaX$Cd>e_6wYn{`hf$t>1Nm`ayc= zo6~gqdj+mOM#FCkTzQ;^mm)2t?+a-7O9Bs^sNp{dOygd>8goDp(PRC7)O7+|zZdnm zz}D|X{ZZh-Qk~ylsPhK}UMTQ@)b9#`t>2NlQQ+u2o&OsGTfZyyw7}NyK23$}5q;M0 zKg|}{`W>h{EO?>D_ol$s??PQZMd$CU*74sJI0-#X^*`+p9dG?k)JB2(uF>%cfvw+- zT6U<^_Y56>yTI1(M)`_$e9KWfJ}j{HJ5rA`jK;wqmH!;W&>w>DCBO&=m-XKtG)zhP zZ_ZSXx8aU7_$z7f<7x0qY4Cri!Sf-jKyKsjPJ^FIgO54foBql)_={=qi)rxGY2N(j zr@@~~gC9?WUr&RlAK}F}I}J9|;H%Q$wlw&@GT&BwI>*Cn`C;97}m6|O2=pT>15uFG(J2G`}duE2FAuB&h@ z#I*?5xwt-o>pWcN{w--6G>y#aKzb`y9qdnZ9cxcT(AIkvoBG&d8m>dz4~~bgm5-u2h+uP4>TW zVa)8_Jq@m;@52rj2mAYUe8N@0`?+bvDdr#@op2%im+m5Q$~}mOCNhv7qzxD@y#MNb zZBEe>J}%)w@vqsv<`kK0v*WmSH0~eGe)ip2d%Iox?#Oa`PbRpIsK9T@+`t;)&8_L@ z9f-DrdeXs#a6)GsT=~a3-QY@QZ*q3dHBfB!6AcoRd2&=o9F#K-lSSn@+%Q>W_Nj)+ zBH|t9lSN{mV{jqL+!>u^N2?rQIM8g~jsL63p|>2PaTTkNEKDTVrYvPy`)9LiFVjow zM6;(ilT>r;qWM@tW-a%d$z4f(*4jZLC#{_T?>TEH+L}Q$!MQhK%Dom z0s^v}A*0aD^W6yLQ)PJ4Y3@iQ*8vBKai46EAm>Pf1f-p1kWlLogMj+<0)Q+B#;wB) z)+vUJv*V!FR_o&ubP>MV4Xbeu#Fcx2J_d=SW7&@_i&n_19%@$IL35`TimqXRH zY~oYEbH!DQ(2*Jb?m^ZmBQvYmHJT=xp)^Ft8s*@+3(v}kwY3~)@Vw2106Nu7e~^+@ zk(Fj-eJ(n^d5wA+}&(B9rw3+fip;`w#9_(e9gg^+-#-u z*eh1fKbXu)6R+j7=`elHZ)B99!JY4TIA7pETW$c^B_)x_^{qJ7&u6eI`S>^vqI-0~ z0kMQX!!d`glt-l!;y4IbJp(Ri1!7Nm5aSCmVqRD zk=gO4Nw?rC*V0WV^&J5}a4w}ugQMR|$JFo3=dEdOy&eh=saXH>Oyk_v`t{8l>TzTf zA9dhwWzc6;X7eXfTvWO;Z#sa?mZEe|ZsQ=hyGJ_Ym+)D2ZJx5HDBWKQJs23nb}h9E zwFp&&DzKbrFKFO&J6b1j2)-Xrg=gHMrs>t zn%3fkZewG_KK|<>JR7STv&9Riv=1mQ-DItlB`yaCoz0~2O3s|tI(%-$(_c#F*q;%> z=V}m}-TT7WZ*|A|7WyQEBLg-oOE8mcIn9x#W_?=wz?|ojkbM$6O*-vTJk+NPewO^2 z$#(XMy7jZy)HLMkZtgf~(}{WSX@Y^dTKYamYkgZ=eO-h-ZZfqK!aXMfZQNqwyAkBF z6B@KuUHzJxj>dNW>P4izW~~W(mCcKvSdo}BzoEXh*&{3^?^m5l5428>@yW%E129Rt z)k{k=8Z1)ZSihc0n@p=MZwQ%e!eHidQS0iFW6|OI)EPc8w7j7Ni196#@geqPPBXdh zSIf>>)6m-H9aE20zln*e^bVWPfc2M195pvV#QK92+08T=zxH)rD?G7c+-GxLB+qWb zw}M*nu^j$5LR)#GISU`Q^LEH_YW_KGV2Gvo)2(=ELz{Vx+b^)ytyIx%S|?URIz!#i zv;p5DtizlPeYwN-#M3Or#PDNzw4p81h_5bq*)ySTOS%>8Vsw#~W_%tH-!^mG%!$!h z0AsEHNX`Io2*DeM0meKA{@ zX?-iQ5+92U*QnJmE{gKbP`Xis1t;2ts53#MGiHS&epU#Tr04INFqKt7`EI$CG zb7@dhZwb3FV%!b^c+^Cn-_36VdB_c1xV`*#&GY#vzUHF{pF<~Do6)fJX85OF*J zaYnoG^ke!O4oyDlKB93R`0QxljGECFM(-$PQ;4_GcaQXECq`QeNo+mgg9|rA=dwyuB7nw`fieF9*f;KyL|=xq-`b zDdwE$yqwL>{mG1~b6`vpg#(x0^f|%<$3Ws&(}Y<)8hzDaRs##;Zb>FRHnA=-dD>=S z8ONp#-dlUa+K%RqHgYuE@uftJy(*V&z;}`Lf49y)a6Y(gjA+vXM>4;*rlqD9U)2{D zP8gBf<;rfWa!3@7Ff3=pG71xJ!5r0@xJbaz=*=iCUItB42YRNGq}DmR`u;RW76*Ug z6_!0fo({FYQC6;&g~4?`wU0&P*^x?kDxR5w3Ac3i@!*8fQG3?a;}fU&X^2QoJ2kpl znP&ed%!YZ4xp`ALZ#&q)jKIhJT@xk~Mh*G&A}7N-#sHVvz*Dqq(3qncE$Y+xvHzT& z<|l5tn|^r-XqQ2#OG@w~4DM8Dm-HWTn1x2p`6CXPB%oi7$i$MdevzYBdF`t9SiB?g z{n&Xgf*d>@b96rGJt1D_Gw0qDx64anGp_w%SWkrjt)Q=dJMz2#9XQ$f;N=zf4&bNV z1>QYg2N^&3%(kCM}UR)l-M{8(Vmb)nu#pe(hqzuFLElFYC+> zcGJlY#!LaQ_Ft}|0qn{pnkSaKmYMv3O0Dzy?+2+7rC+|U$n}04nS9Z9VX~soVmX>( zX7;okWmAursWu!EQ3$WN3y?WQ-0tJvIx z6+m_u%P(YNLH~xOE!ckSGLHw&f>Mkl?H}xjv^Ci;-n4GNIZp!EY_FGrp>|rl}1-cZD5f>=(@OIFb8Zi^?wFBxD$p>k`N-r?z8- zVL9j2gq|&<&ZH2wr(4^@-24836RnbK(;+syWGsvvG{&Uum^^5BG1)_op2r`b@JNOB z<>ufy`5gNlvt+c${>LBgHZJ8hX8p1Ou9^#5w#L-{h6q5`1YiySIH2Q@95l91ej18+ zjeVE+g(MosdfG4jC(W|UGKsN^zt+Spew@kc_?JuqU7FM`r$xu|^?JJ|IwStOR48H_ znsUZYTn#vDx@b;W60_Wz3EP^ia}!bnFcvOkBi7f;*Q2sh-8m8P)lxW8zAG7j#D2Y( zBNMOlfh~x8nc@^K^SbtdSVjD@CgbZooz@e6(K`Qha`etyq; z5M(*=U*`K9OqLLNf0-EO*U6j~rGID7F}ss(RY-LM8{BXle0mcG&SEfD_u}17&?Nx}CeVCWeRT@!(lLo8%O~H$_dA={{2Mgi3-|<`XF7 zAHfh4p3HNC&_BAdF1DsSrT17wWg8Zb3tiSa=2V&cC(m;nelm`eJ@6E9n1oO3Sw^;o z0F%I%zOX-e3Q3~&x8geqf^(tIt#;_M1>A`a0=qI?U<+rKZj?jv(p(*_cCtDjlRLqm zMSVt4xYQ{@-`fIadz55 zCHe<_d|=MRe&p~POyPhz_J3IgusYv_jMZHEDx-VEH8HctA3pK+iwRLgOUCR#TEEu` ztDRe|;Ygo*$LoGQIqYao-#1hmsl+eByM}xdA{$NXK0z|6Mjl{RFvr<<{7oD`Qc9fHnRlD1#P+PPzYhl47g z`E8$UJ9j*LRK{gYNGTtbZ;)i$z%f2M0u8}N$fXjpBAZ-$=u$k}STJ(dTYA#AfBb71 zhg}^xEVsRZ!$S~8GG^MO$oTkN=QY+@TKz!e``}{JTQB6ao{R=Owa&$&v^@}$tW+8{ z?5N05F3&p1_8JeJ)H?LVv)Peycn`3ZpIWj+=HBoj1Wa_5W`xYo2q_6=2F=L~nwuGv zi3>komqEh3%%BAsL33tj24!ZPmr2+B%%GBzOu|Y^GRrKPmC2rxS(${C%*mvrWNv0n zOXg-Nciyawij~aIf^U9i-qKKJ-AYR{+o5!JX5C8XWR_bxFSDgf=VjKTbbbihk-u`- O(%P^AMlB>nopwu literal 0 HcmV?d00001 diff --git a/barinov.egor/T2/t2.cpp b/barinov.egor/T2/t2.cpp index 77d0be67..489e4dde 100644 --- a/barinov.egor/T2/t2.cpp +++ b/barinov.egor/T2/t2.cpp @@ -259,4 +259,5 @@ int main() ); return 0; -} \ No newline at end of file +} + From c79000414acbce8639f662f025e57d0d9d931bb6 Mon Sep 17 00:00:00 2001 From: Barinov Egor Date: Sat, 30 May 2026 14:01:10 +0300 Subject: [PATCH 03/10] barinov.egor/T2 --- barinov.egor/T2/t2.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/barinov.egor/T2/t2.cpp b/barinov.egor/T2/t2.cpp index 489e4dde..85d5558f 100644 --- a/barinov.egor/T2/t2.cpp +++ b/barinov.egor/T2/t2.cpp @@ -125,18 +125,21 @@ namespace barinov class IofGuard { public: - IofGuard(std::basic_ios& s) : s_(s), - fill_(s.fill()), - precision_(s.precision()), - fmt_(s.flags()) + IofGuard(std::basic_ios& s) : + s_(s), + fill_(s.fill()), + precision_(s.precision()), + fmt_(s.flags()) { } + ~IofGuard() { s_.fill(fill_); s_.precision(precision_); s_.flags(fmt_); } + private: std::basic_ios& s_; char fill_; @@ -159,8 +162,10 @@ namespace barinov { return a.key1 < b.key1; } - double valA = static_cast(a.key2.first) / static_cast(a.key2.second); - double valB = static_cast(b.key2.first) / static_cast(b.key2.second); + double valA = static_cast(a.key2.first) + / static_cast(a.key2.second); + double valB = static_cast(b.key2.first) + / static_cast(b.key2.second); if (std::fabs(valA - valB) > 1e-10) { return valA < valB; @@ -231,7 +236,8 @@ namespace barinov } IofGuard guard(out); out << "(:key1 " << src.key1 << "ll"; - out << ":key2 (:N " << src.key2.first << ":D " << src.key2.second << ":)"; + out << ":key2 (:N " << src.key2.first + << ":D " << src.key2.second << ":)"; out << ":key3 \"" << src.key3 << "\":)"; return out; } @@ -260,4 +266,3 @@ int main() return 0; } - From 60259b93cfee7c6e8f82d6c3aaea850265dea893 Mon Sep 17 00:00:00 2001 From: Barinov Egor Date: Sat, 30 May 2026 14:08:16 +0300 Subject: [PATCH 04/10] barinov.egor/T2 --- barinov.egor/T2/t2.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/barinov.egor/T2/t2.cpp b/barinov.egor/T2/t2.cpp index 85d5558f..d5cfdadf 100644 --- a/barinov.egor/T2/t2.cpp +++ b/barinov.egor/T2/t2.cpp @@ -266,3 +266,4 @@ int main() return 0; } + From 90b2581bd367ac9d162013fc3622a0a7a5b0e91b Mon Sep 17 00:00:00 2001 From: Barinov Egor Date: Sat, 30 May 2026 14:13:49 +0300 Subject: [PATCH 05/10] barinov.egor/T2 --- barinov.egor/T2/t2 | Bin 102416 -> 0 bytes barinov.egor/T4/compositeshape.cpp | 94 ----------------------------- barinov.egor/T4/compositeshape.h | 26 -------- barinov.egor/T4/main.cpp | 91 ---------------------------- barinov.egor/T4/point.h | 12 ---- barinov.egor/T4/rectangle.cpp | 43 ------------- barinov.egor/T4/rectangle.h | 23 ------- barinov.egor/T4/rhombus.cpp | 57 ----------------- barinov.egor/T4/rhombus.h | 29 --------- barinov.egor/T4/ring.cpp | 48 --------------- barinov.egor/T4/ring.h | 24 -------- barinov.egor/T4/shape.h | 31 ---------- 12 files changed, 478 deletions(-) delete mode 100755 barinov.egor/T2/t2 delete mode 100644 barinov.egor/T4/compositeshape.cpp delete mode 100644 barinov.egor/T4/compositeshape.h delete mode 100644 barinov.egor/T4/main.cpp delete mode 100644 barinov.egor/T4/point.h delete mode 100644 barinov.egor/T4/rectangle.cpp delete mode 100644 barinov.egor/T4/rectangle.h delete mode 100644 barinov.egor/T4/rhombus.cpp delete mode 100644 barinov.egor/T4/rhombus.h delete mode 100644 barinov.egor/T4/ring.cpp delete mode 100644 barinov.egor/T4/ring.h delete mode 100644 barinov.egor/T4/shape.h diff --git a/barinov.egor/T2/t2 b/barinov.egor/T2/t2 deleted file mode 100755 index 8abf5d2fbcac4e1ef2b746d61af69baa2207df80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102416 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 O(%P^AMlB>nopwu diff --git a/barinov.egor/T4/compositeshape.cpp b/barinov.egor/T4/compositeshape.cpp deleted file mode 100644 index 0861ea96..00000000 --- a/barinov.egor/T4/compositeshape.cpp +++ /dev/null @@ -1,94 +0,0 @@ -#include "compositeshape.h" -#include -#include - -void CompositeShape::addShape(std::unique_ptr shape) { - shapes.push_back(std::move(shape)); -} - -double CompositeShape::getArea() const { - double totalArea = 0; - for (const auto& shape : shapes) { - totalArea += shape->getArea(); - } - return totalArea; -} - -Point CompositeShape::getCenter() const { - if (shapes.empty()) { - return Point(0, 0); - } - - double minX = std::numeric_limits::max(); - double minY = std::numeric_limits::max(); - double maxX = std::numeric_limits::lowest(); - double maxY = std::numeric_limits::lowest(); - - for (const auto& shape : shapes) { - BoundingBox box = shape->getBoundingBox(); - - minX = std::min(minX, box.bottomLeft.x); - minY = std::min(minY, box.bottomLeft.y); - maxX = std::max(maxX, box.topRight.x); - maxY = std::max(maxY, box.topRight.y); - } - - return Point((minX + maxX) / 2, (minY + maxY) / 2); -} - -BoundingBox CompositeShape::getBoundingBox() const { - if (shapes.empty()) { - BoundingBox emptyBox; - emptyBox.bottomLeft = Point(0, 0); - emptyBox.topRight = Point(0, 0); - return emptyBox; - } - - double minX = std::numeric_limits::max(); - double minY = std::numeric_limits::max(); - double maxX = std::numeric_limits::lowest(); - double maxY = std::numeric_limits::lowest(); - - for (const auto& shape : shapes) { - BoundingBox box = shape->getBoundingBox(); - - minX = std::min(minX, box.bottomLeft.x); - minY = std::min(minY, box.bottomLeft.y); - maxX = std::max(maxX, box.topRight.x); - maxY = std::max(maxY, box.topRight.y); - } - - BoundingBox resultBox; - resultBox.bottomLeft = Point(minX, minY); - resultBox.topRight = Point(maxX, maxY); - return resultBox; -} - -void CompositeShape::move(double dx, double dy) { - for (auto& shape : shapes) { - shape->move(dx, dy); - } -} - -void CompositeShape::scale(double factor) { - Point compositeCenter = getCenter(); - - for (auto& shape : shapes) { - Point shapeCenter = shape->getCenter(); - - double dx = shapeCenter.x - compositeCenter.x; - double dy = shapeCenter.y - compositeCenter.y; - - shape->move(dx * (factor - 1), dy * (factor - 1)); - shape->scale(factor); - } -} - -std::string CompositeShape::getName() const { - return "COMPOSITE"; -} - -const std::vector>& CompositeShape::getShapes() const { - return shapes; -} - diff --git a/barinov.egor/T4/compositeshape.h b/barinov.egor/T4/compositeshape.h deleted file mode 100644 index af50c41f..00000000 --- a/barinov.egor/T4/compositeshape.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef COMPOSITESHAPE_H -#define COMPOSITESHAPE_H - -#include "shape.h" -#include -#include - -class CompositeShape : public Shape { -private: - std::vector> shapes; - -public: - void addShape(std::unique_ptr shape); - - double getArea() const override; - Point getCenter() const override; - void move(double dx, double dy) override; - void scale(double factor) override; - std::string getName() const override; - BoundingBox getBoundingBox() const override; - - const std::vector>& getShapes() const; -}; - -#endif - diff --git a/barinov.egor/T4/main.cpp b/barinov.egor/T4/main.cpp deleted file mode 100644 index e537d417..00000000 --- a/barinov.egor/T4/main.cpp +++ /dev/null @@ -1,91 +0,0 @@ -#include -#include -#include -#include -#include "rectangle.h" -#include "ring.h" -#include "rhombus.h" -#include "compositeshape.h" - -void printShapeInfo(const Shape& shape) { - Point center = shape.getCenter(); - std::cout << std::fixed << std::setprecision(2); - std::cout << "[" << shape.getName() << ", (" << center.x << ", " << center.y << "), " << shape.getArea() << "]"; -} - -void printCompositeInfo(const CompositeShape& composite) { - Point center = composite.getCenter(); - std::cout << std::fixed << std::setprecision(2); - std::cout << "[COMPOSITE, (" << center.x << ", " << center.y << "), " << composite.getArea() << ":\n"; - - for (const auto& shape : composite.getShapes()) { - std::cout << " "; - printShapeInfo(*shape); - std::cout << "\n"; - } - std::cout << "]"; -} - -int main() { - std::vector> shapes; - - shapes.push_back(std::make_unique( - Point(0, 0), Point(6, 4))); - - shapes.push_back(std::make_unique( - Point(10, 5), 5.0, 2.0)); - - shapes.push_back(std::make_unique( - Point(-5, -2), 8.0, 6.0)); - - shapes.push_back(std::make_unique( - Point(-10, 2), Point(-6, 5))); - - shapes.push_back(std::make_unique( - Point(0, 10), 3.0, 1.0)); - - auto composite = std::make_unique(); - - composite->addShape(std::make_unique( - Point(15, 15), Point(20, 18))); - - composite->addShape(std::make_unique( - Point(18, 20), 2.5, 1.0)); - - composite->addShape(std::make_unique( - Point(22, 17), 5.0, 4.0)); - - shapes.push_back(std::move(composite)); - - std::cout << "=== Фигуры до масштабирования ===\n"; - std::cout << "Варианты: 0 - Прямоугольник, 2 - Кольцо, 5 - Ромб\n\n"; - - for (size_t i = 0; i < shapes.size(); ++i) { - std::cout << "Фигура " << i + 1 << ": "; - if (shapes[i]->getName() == "COMPOSITE") { - printCompositeInfo(dynamic_cast(*shapes[i])); - } else { - printShapeInfo(*shapes[i]); - } - std::cout << "\n\n"; - } - - std::cout << "\n=== Масштабирование всех фигур в 2 раза ===\n\n"; - for (auto& shape : shapes) { - shape->scale(2.0); - } - - std::cout << "=== Фигуры после масштабирования (x2) ===\n\n"; - for (size_t i = 0; i < shapes.size(); ++i) { - std::cout << "Фигура " << i + 1 << ": "; - if (shapes[i]->getName() == "COMPOSITE") { - printCompositeInfo(dynamic_cast(*shapes[i])); - } else { - printShapeInfo(*shapes[i]); - } - std::cout << "\n\n"; - } - - return 0; -} - diff --git a/barinov.egor/T4/point.h b/barinov.egor/T4/point.h deleted file mode 100644 index e053a5d7..00000000 --- a/barinov.egor/T4/point.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef POINT_H -#define POINT_H - -struct Point { - double x; - double y; - - Point(double x = 0, double y = 0) : x(x), y(y) {} -}; - -#endif - diff --git a/barinov.egor/T4/rectangle.cpp b/barinov.egor/T4/rectangle.cpp deleted file mode 100644 index 82dcfc30..00000000 --- a/barinov.egor/T4/rectangle.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "rectangle.h" -#include - -Rectangle::Rectangle(const Point& bottomLeft, const Point& topRight) - : bottomLeft(bottomLeft), topRight(topRight) {} - -double Rectangle::getArea() const { - double width = topRight.x - bottomLeft.x; - double height = topRight.y - bottomLeft.y; - return width * height; -} - -Point Rectangle::getCenter() const { - return Point((bottomLeft.x + topRight.x) / 2, - (bottomLeft.y + topRight.y) / 2); -} - -void Rectangle::move(double dx, double dy) { - bottomLeft.x += dx; - bottomLeft.y += dy; - topRight.x += dx; - topRight.y += dy; -} - -void Rectangle::scale(double factor) { - Point center = getCenter(); - bottomLeft.x = center.x - (center.x - bottomLeft.x) * factor; - bottomLeft.y = center.y - (center.y - bottomLeft.y) * factor; - topRight.x = center.x + (topRight.x - center.x) * factor; - topRight.y = center.y + (topRight.y - center.y) * factor; -} - -std::string Rectangle::getName() const { - return "RECTANGLE"; -} - -BoundingBox Rectangle::getBoundingBox() const { - BoundingBox box; - box.bottomLeft = bottomLeft; - box.topRight = topRight; - return box; -} - diff --git a/barinov.egor/T4/rectangle.h b/barinov.egor/T4/rectangle.h deleted file mode 100644 index b97c7533..00000000 --- a/barinov.egor/T4/rectangle.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef RECTANGLE_H -#define RECTANGLE_H - -#include "shape.h" - -class Rectangle : public Shape { -private: - Point bottomLeft; - Point topRight; - -public: - Rectangle(const Point& bottomLeft, const Point& topRight); - - double getArea() const override; - Point getCenter() const override; - void move(double dx, double dy) override; - void scale(double factor) override; - std::string getName() const override; - BoundingBox getBoundingBox() const override; -}; - -#endif - diff --git a/barinov.egor/T4/rhombus.cpp b/barinov.egor/T4/rhombus.cpp deleted file mode 100644 index 0eb688db..00000000 --- a/barinov.egor/T4/rhombus.cpp +++ /dev/null @@ -1,57 +0,0 @@ -#include "rhombus.h" -#include - -Rhombus::Rhombus(const Point& center, double verticalDiagonal, double horizontalDiagonal) - : center(center), verticalDiagonal(verticalDiagonal), horizontalDiagonal(horizontalDiagonal) { - if (verticalDiagonal <= 0 || horizontalDiagonal <= 0) { - throw std::invalid_argument("Diagonals must be positive"); - } -} - -double Rhombus::getArea() const { - return (verticalDiagonal * horizontalDiagonal) / 2.0; -} - -Point Rhombus::getCenter() const { - return center; -} - -void Rhombus::move(double dx, double dy) { - center.x += dx; - center.y += dy; -} - -void Rhombus::scale(double factor) { - if (factor <= 0) { - throw std::invalid_argument("Scale factor must be positive"); - } - verticalDiagonal *= factor; - horizontalDiagonal *= factor; -} - -std::string Rhombus::getName() const { - return "RHOMBUS"; -} - -BoundingBox Rhombus::getBoundingBox() const { - BoundingBox box; - box.bottomLeft = Point(center.x - horizontalDiagonal / 2, center.y - verticalDiagonal / 2); - box.topRight = Point(center.x + horizontalDiagonal / 2, center.y + verticalDiagonal / 2); - return box; -} - -Point Rhombus::getTop() const { - return Point(center.x, center.y + verticalDiagonal / 2.0); -} - -Point Rhombus::getBottom() const { - return Point(center.x, center.y - verticalDiagonal / 2.0); -} - -Point Rhombus::getLeft() const { - return Point(center.x - horizontalDiagonal / 2.0, center.y); -} - -Point Rhombus::getRight() const { - return Point(center.x + horizontalDiagonal / 2.0, center.y); -} diff --git a/barinov.egor/T4/rhombus.h b/barinov.egor/T4/rhombus.h deleted file mode 100644 index 17355390..00000000 --- a/barinov.egor/T4/rhombus.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef RHOMBUS_H -#define RHOMBUS_H - -#include "shape.h" - -class Rhombus : public Shape { -private: - Point center; - double verticalDiagonal; - double horizontalDiagonal; - -public: - Rhombus(const Point& center, double verticalDiagonal, double horizontalDiagonal); - - double getArea() const override; - Point getCenter() const override; - void move(double dx, double dy) override; - void scale(double factor) override; - std::string getName() const override; - BoundingBox getBoundingBox() const override; - - Point getTop() const; - Point getBottom() const; - Point getLeft() const; - Point getRight() const; -}; - -#endif - diff --git a/barinov.egor/T4/ring.cpp b/barinov.egor/T4/ring.cpp deleted file mode 100644 index dbf59836..00000000 --- a/barinov.egor/T4/ring.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include "ring.h" -#include -#include - -const double PI = 3.14159265358979323846; - -Ring::Ring(const Point& center, double outerRadius, double innerRadius) - : center(center), outerRadius(outerRadius), innerRadius(innerRadius) { - if (innerRadius >= outerRadius) { - throw std::invalid_argument("Inner radius must be less than outer radius"); - } - if (innerRadius <= 0 || outerRadius <= 0) { - throw std::invalid_argument("Radii must be positive"); - } -} - -double Ring::getArea() const { - return PI * (outerRadius * outerRadius - innerRadius * innerRadius); -} - -Point Ring::getCenter() const { - return center; -} - -void Ring::move(double dx, double dy) { - center.x += dx; - center.y += dy; -} - -void Ring::scale(double factor) { - if (factor <= 0) { - throw std::invalid_argument("Scale factor must be positive"); - } - outerRadius *= factor; - innerRadius *= factor; -} - -std::string Ring::getName() const { - return "RING"; -} - -BoundingBox Ring::getBoundingBox() const { - BoundingBox box; - box.bottomLeft = Point(center.x - outerRadius, center.y - outerRadius); - box.topRight = Point(center.x + outerRadius, center.y + outerRadius); - return box; -} - diff --git a/barinov.egor/T4/ring.h b/barinov.egor/T4/ring.h deleted file mode 100644 index 82493c20..00000000 --- a/barinov.egor/T4/ring.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef RING_H -#define RING_H - -#include "shape.h" - -class Ring : public Shape { -private: - Point center; - double outerRadius; - double innerRadius; - -public: - Ring(const Point& center, double outerRadius, double innerRadius); - - double getArea() const override; - Point getCenter() const override; - void move(double dx, double dy) override; - void scale(double factor) override; - std::string getName() const override; - BoundingBox getBoundingBox() const override; -}; - -#endif - diff --git a/barinov.egor/T4/shape.h b/barinov.egor/T4/shape.h deleted file mode 100644 index 38a0b4a0..00000000 --- a/barinov.egor/T4/shape.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef SHAPE_H -#define SHAPE_H - -#include -#include "point.h" - -struct BoundingBox { - Point bottomLeft; - Point topRight; - - double getWidth() const { return topRight.x - bottomLeft.x; } - double getHeight() const { return topRight.y - bottomLeft.y; } - Point getCenter() const { - return Point((bottomLeft.x + topRight.x) / 2, (bottomLeft.y + topRight.y) / 2); - } -}; - -class Shape { -public: - virtual ~Shape() = default; - - virtual double getArea() const = 0; - virtual Point getCenter() const = 0; - virtual void move(double dx, double dy) = 0; - virtual void scale(double factor) = 0; - virtual std::string getName() const = 0; - virtual BoundingBox getBoundingBox() const = 0; -}; - -#endif - From cfe35480f8091f09257f9b98c9652f46d80d3906 Mon Sep 17 00:00:00 2001 From: Barinov Egor Date: Sat, 30 May 2026 14:22:02 +0300 Subject: [PATCH 06/10] barinov.egor/T2 --- barinov.egor/T2/t2.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/barinov.egor/T2/t2.cpp b/barinov.egor/T2/t2.cpp index d5cfdadf..c0a2bbc4 100644 --- a/barinov.egor/T2/t2.cpp +++ b/barinov.egor/T2/t2.cpp @@ -250,11 +250,19 @@ int main() std::vector data; - std::copy( - std::istream_iterator(std::cin), - std::istream_iterator(), - std::back_inserter(data) - ); + while (!std::cin.eof()) + { + DataStruct temp; + if (std::cin >> temp) + { + data.push_back(temp); + } + else + { + std::cin.clear(); + std::cin.ignore(std::numeric_limits::max(), '\n'); + } + } std::sort(data.begin(), data.end(), DataStructComparator()); @@ -266,4 +274,3 @@ int main() return 0; } - From 48891dafb7ab2d41d3885f9d693497dc817997c6 Mon Sep 17 00:00:00 2001 From: Barinov Egor Date: Mon, 1 Jun 2026 21:16:06 +0300 Subject: [PATCH 07/10] barinov.egor/T3 --- barinov.egor/T3/commands.cpp | 202 ++++++++++++++++++++++++++ barinov.egor/T3/commands.hpp | 28 ++++ barinov.egor/T3/input.txt | 4 + barinov.egor/T3/main.cpp | 267 +++++++++++++++++++++++++++++++++++ barinov.egor/T3/polygon.cpp | 150 ++++++++++++++++++++ barinov.egor/T3/polygon.hpp | 42 ++++++ barinov.egor/T3/t3 | Bin 0 -> 196160 bytes 7 files changed, 693 insertions(+) create mode 100644 barinov.egor/T3/commands.cpp create mode 100644 barinov.egor/T3/commands.hpp create mode 100644 barinov.egor/T3/input.txt create mode 100644 barinov.egor/T3/main.cpp create mode 100644 barinov.egor/T3/polygon.cpp create mode 100644 barinov.egor/T3/polygon.hpp create mode 100755 barinov.egor/T3/t3 diff --git a/barinov.egor/T3/commands.cpp b/barinov.egor/T3/commands.cpp new file mode 100644 index 00000000..02f81859 --- /dev/null +++ b/barinov.egor/T3/commands.cpp @@ -0,0 +1,202 @@ +#include "commands.hpp" +#include +#include +#include + +bool isEven(int n) +{ + return n % 2 == 0; +} + +bool isOdd(int n) +{ + return n % 2 != 0; +} + +double getAreaEven(const std::vector& polygons) +{ + double sum = 0.0; + for (const auto& polygon : polygons) + { + if (isEven(polygon.points.size())) + { + sum += getArea(polygon); + } + } + return sum; +} + +double getAreaOdd(const std::vector& polygons) +{ + double sum = 0.0; + for (const auto& polygon : polygons) + { + if (isOdd(polygon.points.size())) + { + sum += getArea(polygon); + } + } + return sum; +} + +double getAreaMean(const std::vector& polygons) +{ + if (polygons.empty()) + { + return 0.0; + } + double sum = 0.0; + for (const auto& polygon : polygons) + { + sum += getArea(polygon); + } + return sum / static_cast(polygons.size()); +} + +double getAreaByVertexCount(const std::vector& polygons, size_t vertexCount) +{ + double sum = 0.0; + for (const auto& polygon : polygons) + { + if (polygon.points.size() == vertexCount) + { + sum += getArea(polygon); + } + } + return sum; +} + +double getMaxArea(const std::vector& polygons) +{ + if (polygons.empty()) + { + return 0.0; + } + double maxArea = getArea(polygons[0]); + for (const auto& polygon : polygons) + { + double area = getArea(polygon); + if (area > maxArea) + { + maxArea = area; + } + } + return maxArea; +} + +size_t getMaxVertexes(const std::vector& polygons) +{ + if (polygons.empty()) + { + return 0; + } + size_t maxVertexes = polygons[0].points.size(); + for (const auto& polygon : polygons) + { + if (polygon.points.size() > maxVertexes) + { + maxVertexes = polygon.points.size(); + } + } + return maxVertexes; +} + +double getMinArea(const std::vector& polygons) +{ + if (polygons.empty()) + { + return 0.0; + } + double minArea = getArea(polygons[0]); + for (const auto& polygon : polygons) + { + double area = getArea(polygon); + if (area < minArea) + { + minArea = area; + } + } + return minArea; +} + +size_t getMinVertexes(const std::vector& polygons) +{ + if (polygons.empty()) + { + return 0; + } + size_t minVertexes = polygons[0].points.size(); + for (const auto& polygon : polygons) + { + if (polygon.points.size() < minVertexes) + { + minVertexes = polygon.points.size(); + } + } + return minVertexes; +} + +size_t countEven(const std::vector& polygons) +{ + size_t count = 0; + for (const auto& polygon : polygons) + { + if (isEven(polygon.points.size())) + { + ++count; + } + } + return count; +} + +size_t countOdd(const std::vector& polygons) +{ + size_t count = 0; + for (const auto& polygon : polygons) + { + if (isOdd(polygon.points.size())) + { + ++count; + } + } + return count; +} + +size_t countByVertexCount(const std::vector& polygons, size_t vertexCount) +{ + size_t count = 0; + for (const auto& polygon : polygons) + { + if (polygon.points.size() == vertexCount) + { + ++count; + } + } + return count; +} + +size_t echoCommand(std::vector& polygons, const Polygon& target) +{ + size_t added = 0; + for (size_t i = 0; i < polygons.size(); ++i) + { + if (polygons[i] == target) + { + polygons.insert(polygons.begin() + i + 1, target); + ++added; + ++i; + } + } + return added; +} + +bool inframeCommand(const std::vector& polygons, const Polygon& target) +{ + if (polygons.empty()) + { + return false; + } + Point bottomLeft, topRight; + getBoundingBox(polygons, bottomLeft, topRight); + return isPolygonInBoundingBox(target, bottomLeft, topRight); +} \ No newline at end of file diff --git a/barinov.egor/T3/commands.hpp b/barinov.egor/T3/commands.hpp new file mode 100644 index 00000000..48951354 --- /dev/null +++ b/barinov.egor/T3/commands.hpp @@ -0,0 +1,28 @@ +#ifndef COMMANDS_HPP +#define COMMANDS_HPP + +#include "polygon.hpp" +#include +#include + +bool isEven(int n); +bool isOdd(int n); + +double getAreaEven(const std::vector& polygons); +double getAreaOdd(const std::vector& polygons); +double getAreaMean(const std::vector& polygons); +double getAreaByVertexCount(const std::vector& polygons, size_t vertexCount); + +double getMaxArea(const std::vector& polygons); +size_t getMaxVertexes(const std::vector& polygons); +double getMinArea(const std::vector& polygons); +size_t getMinVertexes(const std::vector& polygons); + +size_t countEven(const std::vector& polygons); +size_t countOdd(const std::vector& polygons); +size_t countByVertexCount(const std::vector& polygons, size_t vertexCount); + +size_t echoCommand(std::vector& polygons, const Polygon& target); +bool inframeCommand(const std::vector& polygons, const Polygon& target); + +#endif \ No newline at end of file diff --git a/barinov.egor/T3/input.txt b/barinov.egor/T3/input.txt new file mode 100644 index 00000000..55de7818 --- /dev/null +++ b/barinov.egor/T3/input.txt @@ -0,0 +1,4 @@ +3 (1;1) (1;3) (3;3) +4 (0;0) (1;0) (1;1) (0;1) +3 (1;1) (1;3) (3;3) +4 (5;5) (6;5) (6;6) (5;6) diff --git a/barinov.egor/T3/main.cpp b/barinov.egor/T3/main.cpp new file mode 100644 index 00000000..fc3abb72 --- /dev/null +++ b/barinov.egor/T3/main.cpp @@ -0,0 +1,267 @@ +#include "polygon.hpp" +#include "commands.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +bool readPolygonsFromFile(const std::string& filename, std::vector& polygons) +{ + std::ifstream file(filename); + if (!file.is_open()) + { + return false; + } + std::string line; + while (std::getline(file, line)) + { + if (line.empty()) + { + continue; + } + std::istringstream iss(line); + Polygon polygon; + if (iss >> polygon) + { + polygons.push_back(polygon); + } + } + return true; +} + +bool parsePolygon(const std::vector& tokens, size_t start, Polygon& polygon) +{ + if (start >= tokens.size()) + { + return false; + } + size_t vertexCount = 0; + std::istringstream countStream(tokens[start]); + countStream >> vertexCount; + if (vertexCount < 3 || start + 1 + vertexCount > tokens.size()) + { + return false; + } + polygon.points.clear(); + for (size_t i = 0; i < vertexCount; ++i) + { + Point p; + std::istringstream pointStream(tokens[start + 1 + i]); + if (!(pointStream >> p)) + { + return false; + } + polygon.points.push_back(p); + } + return true; +} + +int main(int argc, char* argv[]) +{ + if (argc != 2) + { + std::cerr << "Usage: " << argv[0] << " " << std::endl; + return 1; + } + std::vector polygons; + if (!readPolygonsFromFile(argv[1], polygons)) + { + std::cerr << "Error: cannot read file" << std::endl; + return 1; + } + std::cout << std::fixed << std::setprecision(1); + std::string line; + while (std::getline(std::cin, line)) + { + if (line.empty()) + { + continue; + } + std::istringstream iss(line); + std::string command; + iss >> command; + if (command == "AREA") + { + std::string param; + iss >> param; + if (param == "EVEN") + { + std::cout << getAreaEven(polygons) << std::endl; + } + else if (param == "ODD") + { + std::cout << getAreaOdd(polygons) << std::endl; + } + else if (param == "MEAN") + { + if (polygons.empty()) + { + std::cout << "" << std::endl; + } + else + { + std::cout << getAreaMean(polygons) << std::endl; + } + } + else + { + size_t vertexCount = 0; + std::istringstream countStream(param); + countStream >> vertexCount; + if (vertexCount >= 3) + { + std::cout << getAreaByVertexCount(polygons, vertexCount) << std::endl; + } + else + { + std::cout << "" << std::endl; + } + } + } + else if (command == "MAX") + { + std::string param; + iss >> param; + if (param == "AREA") + { + if (polygons.empty()) + { + std::cout << "" << std::endl; + } + else + { + std::cout << getMaxArea(polygons) << std::endl; + } + } + else if (param == "VERTEXES") + { + if (polygons.empty()) + { + std::cout << "" << std::endl; + } + else + { + std::cout << getMaxVertexes(polygons) << std::endl; + } + } + else + { + std::cout << "" << std::endl; + } + } + else if (command == "MIN") + { + std::string param; + iss >> param; + if (param == "AREA") + { + if (polygons.empty()) + { + std::cout << "" << std::endl; + } + else + { + std::cout << getMinArea(polygons) << std::endl; + } + } + else if (param == "VERTEXES") + { + if (polygons.empty()) + { + std::cout << "" << std::endl; + } + else + { + std::cout << getMinVertexes(polygons) << std::endl; + } + } + else + { + std::cout << "" << std::endl; + } + } + else if (command == "COUNT") + { + std::string param; + iss >> param; + if (param == "EVEN") + { + std::cout << countEven(polygons) << std::endl; + } + else if (param == "ODD") + { + std::cout << countOdd(polygons) << std::endl; + } + else + { + size_t vertexCount = 0; + std::istringstream countStream(param); + countStream >> vertexCount; + if (vertexCount >= 3) + { + std::cout << countByVertexCount(polygons, vertexCount) << std::endl; + } + else + { + std::cout << "" << std::endl; + } + } + } + else if (command == "ECHO") + { + std::vector tokens; + std::string token; + std::istringstream tokenStream(line); + while (tokenStream >> token) + { + tokens.push_back(token); + } + if (tokens.size() < 2) + { + std::cout << "" << std::endl; + continue; + } + Polygon target; + if (!parsePolygon(tokens, 1, target)) + { + std::cout << "" << std::endl; + continue; + } + size_t added = echoCommand(polygons, target); + std::cout << added << std::endl; + } + else if (command == "INFRAME") + { + std::vector tokens; + std::string token; + std::istringstream tokenStream(line); + while (tokenStream >> token) + { + tokens.push_back(token); + } + if (tokens.size() < 2) + { + std::cout << "" << std::endl; + continue; + } + Polygon target; + if (!parsePolygon(tokens, 1, target)) + { + std::cout << "" << std::endl; + continue; + } + bool result = inframeCommand(polygons, target); + std::cout << (result ? "" : "") << std::endl; + } + else + { + std::cout << "" << std::endl; + } + } + return 0; +} \ No newline at end of file diff --git a/barinov.egor/T3/polygon.cpp b/barinov.egor/T3/polygon.cpp new file mode 100644 index 00000000..1327b065 --- /dev/null +++ b/barinov.egor/T3/polygon.cpp @@ -0,0 +1,150 @@ +#include "polygon.hpp" +#include +#include +#include +#include +#include + +bool operator==(const Point& a, const Point& b) +{ + return a.x == b.x && a.y == b.y; +} + +bool operator!=(const Point& a, const Point& b) +{ + return !(a == b); +} + +bool operator==(const Polygon& a, const Polygon& b) +{ + if (a.points.size() != b.points.size()) + { + return false; + } + for (size_t i = 0; i < a.points.size(); ++i) + { + if (a.points[i] != b.points[i]) + { + return false; + } + } + return true; +} + +bool operator!=(const Polygon& a, const Polygon& b) +{ + return !(a == b); +} + +std::istream& operator>>(std::istream& in, Point& point) +{ + char c = '\0'; + in >> c; + if (c != '(') + { + in.setstate(std::ios::failbit); + return in; + } + in >> point.x; + in >> c; + if (c != ';') + { + in.setstate(std::ios::failbit); + return in; + } + in >> point.y; + in >> c; + if (c != ')') + { + in.setstate(std::ios::failbit); + return in; + } + return in; +} + +std::istream& operator>>(std::istream& in, Polygon& polygon) +{ + polygon.points.clear(); + size_t vertexCount = 0; + in >> vertexCount; + if (!in || vertexCount < 3) + { + in.setstate(std::ios::failbit); + return in; + } + for (size_t i = 0; i < vertexCount; ++i) + { + Point p; + in >> p; + if (!in) + { + in.setstate(std::ios::failbit); + return in; + } + polygon.points.push_back(p); + } + return in; +} + +double getArea(const Polygon& polygon) +{ + double area = 0.0; + size_t n = polygon.points.size(); + for (size_t i = 0; i < n; ++i) + { + const Point& p1 = polygon.points[i]; + const Point& p2 = polygon.points[(i + 1) % n]; + area += static_cast(p1.x * p2.y - p2.x * p1.y); + } + return std::fabs(area) / 2.0; +} + +void getBoundingBox(const std::vector& polygons, + Point& bottomLeft, + Point& topRight) +{ + if (polygons.empty()) + { + bottomLeft = Point{0, 0}; + topRight = Point{0, 0}; + return; + } + int minX = std::numeric_limits::max(); + int minY = std::numeric_limits::max(); + int maxX = std::numeric_limits::lowest(); + int maxY = std::numeric_limits::lowest(); + for (const auto& polygon : polygons) + { + for (const auto& point : polygon.points) + { + if (point.x < minX) minX = point.x; + if (point.y < minY) minY = point.y; + if (point.x > maxX) maxX = point.x; + if (point.y > maxY) maxY = point.y; + } + } + bottomLeft = Point{minX, minY}; + topRight = Point{maxX, maxY}; +} + +bool isPointInBoundingBox(const Point& point, + const Point& bottomLeft, + const Point& topRight) +{ + return point.x >= bottomLeft.x && point.x <= topRight.x && + point.y >= bottomLeft.y && point.y <= topRight.y; +} + +bool isPolygonInBoundingBox(const Polygon& polygon, + const Point& bottomLeft, + const Point& topRight) +{ + for (const auto& point : polygon.points) + { + if (!isPointInBoundingBox(point, bottomLeft, topRight)) + { + return false; + } + } + return true; +} \ No newline at end of file diff --git a/barinov.egor/T3/polygon.hpp b/barinov.egor/T3/polygon.hpp new file mode 100644 index 00000000..2104a5cf --- /dev/null +++ b/barinov.egor/T3/polygon.hpp @@ -0,0 +1,42 @@ +#ifndef POLYGON_HPP +#define POLYGON_HPP + +#include +#include + +struct Point +{ + int x, y; +}; + +struct Polygon +{ + std::vector points; +}; + +bool operator==(const Point& a, const Point& b); +bool operator!=(const Point& a, const Point& b); + +bool operator==(const Polygon& a, const Polygon& b); +bool operator!=(const Polygon& a, const Polygon& b); + +std::istream& operator>>(std::istream& in, Point& point); +std::istream& operator>>(std::istream& in, Polygon& polygon); + +double getArea(const Polygon& polygon); + +void getBoundingBox( + const std::vector& polygons, + Point& bottomLeft, + Point& topRight +); + +bool isPointInBoundingBox(const Point& point, + const Point& bottomLeft, + const Point& topRight); + +bool isPolygonInBoundingBox(const Polygon& polygon, + const Point& bottomLeft, + const Point& topRight); + +#endif \ No newline at end of file diff --git a/barinov.egor/T3/t3 b/barinov.egor/T3/t3 new file mode 100755 index 0000000000000000000000000000000000000000..0880056937102423953257b44fef9671fe79bf05 GIT binary patch literal 196160 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 T_iY;Ji={_WV~NqEg}?s~8Xx~T literal 0 HcmV?d00001 From e927a4627075291a13b6518b6e02f9142d24f398 Mon Sep 17 00:00:00 2001 From: Barinov Egor Date: Mon, 1 Jun 2026 21:17:22 +0300 Subject: [PATCH 08/10] barinov.egor/T3 --- barinov.egor/T3/input.txt | 4 ---- barinov.egor/T3/t3 | Bin 196160 -> 0 bytes 2 files changed, 4 deletions(-) delete mode 100644 barinov.egor/T3/input.txt delete mode 100755 barinov.egor/T3/t3 diff --git a/barinov.egor/T3/input.txt b/barinov.egor/T3/input.txt deleted file mode 100644 index 55de7818..00000000 --- a/barinov.egor/T3/input.txt +++ /dev/null @@ -1,4 +0,0 @@ -3 (1;1) (1;3) (3;3) -4 (0;0) (1;0) (1;1) (0;1) -3 (1;1) (1;3) (3;3) -4 (5;5) (6;5) (6;6) (5;6) diff --git a/barinov.egor/T3/t3 b/barinov.egor/T3/t3 deleted file mode 100755 index 0880056937102423953257b44fef9671fe79bf05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196160 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 T_iY;Ji={_WV~NqEg}?s~8Xx~T From 86b0256ecd0a93697bfd5cf0b4e182374e90cf91 Mon Sep 17 00:00:00 2001 From: Barinov Egor Date: Mon, 1 Jun 2026 21:20:30 +0300 Subject: [PATCH 09/10] barinov.egor/T3 --- barinov.egor/T2/t2.cpp | 276 ----------------------------------------- 1 file changed, 276 deletions(-) delete mode 100644 barinov.egor/T2/t2.cpp diff --git a/barinov.egor/T2/t2.cpp b/barinov.egor/T2/t2.cpp deleted file mode 100644 index c0a2bbc4..00000000 --- a/barinov.egor/T2/t2.cpp +++ /dev/null @@ -1,276 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace barinov -{ - struct DelimiterIO - { - char expected; - }; - - struct LongLongIO - { - long long& value; - }; - - struct RationalIO - { - std::pair& value; - }; - - struct StringIO - { - std::string& value; - }; - - std::istream& operator>>(std::istream& in, DelimiterIO&& dest) - { - std::istream::sentry sentry(in); - if (!sentry) - { - return in; - } - char c = '\0'; - in >> c; - if (in && c != dest.expected) - { - in.setstate(std::ios::failbit); - } - return in; - } - - std::istream& operator>>(std::istream& in, LongLongIO&& dest) - { - std::istream::sentry sentry(in); - if (!sentry) - { - return in; - } - long long value = 0; - in >> value; - if (!in) - { - return in; - } - char c1 = '\0', c2 = '\0'; - if (in.get(c1) && in.get(c2)) - { - if ((c1 == 'L' || c1 == 'l') && (c2 == 'L' || c2 == 'l')) - { - dest.value = value; - return in; - } - } - in.setstate(std::ios::failbit); - return in; - } - - std::istream& operator>>(std::istream& in, RationalIO&& dest) - { - std::istream::sentry sentry(in); - if (!sentry) - { - return in; - } - in >> DelimiterIO{ '(' }; - in >> DelimiterIO{ ':' }; - std::string label; - in >> label; - if (label != "N") - { - in.setstate(std::ios::failbit); - return in; - } - long long numerator = 0; - in >> numerator; - in >> DelimiterIO{ ':' }; - in >> label; - if (label != "D") - { - in.setstate(std::ios::failbit); - return in; - } - unsigned long long denominator = 0; - in >> denominator; - in >> DelimiterIO{ ':' }; - in >> DelimiterIO{ ')' }; - if (denominator == 0) - { - in.setstate(std::ios::failbit); - return in; - } - dest.value = { numerator, denominator }; - return in; - } - - std::istream& operator>>(std::istream& in, StringIO&& dest) - { - std::istream::sentry sentry(in); - if (!sentry) - { - return in; - } - in >> DelimiterIO{ '"' }; - std::getline(in, dest.value, '"'); - return in; - } - - class IofGuard - { - public: - IofGuard(std::basic_ios& s) : - s_(s), - fill_(s.fill()), - precision_(s.precision()), - fmt_(s.flags()) - { - } - - ~IofGuard() - { - s_.fill(fill_); - s_.precision(precision_); - s_.flags(fmt_); - } - - private: - std::basic_ios& s_; - char fill_; - std::streamsize precision_; - std::basic_ios::fmtflags fmt_; - }; - - struct DataStruct - { - long long key1; - std::pair key2; - std::string key3; - }; - - struct DataStructComparator - { - bool operator()(const DataStruct& a, const DataStruct& b) const - { - if (a.key1 != b.key1) - { - return a.key1 < b.key1; - } - double valA = static_cast(a.key2.first) - / static_cast(a.key2.second); - double valB = static_cast(b.key2.first) - / static_cast(b.key2.second); - if (std::fabs(valA - valB) > 1e-10) - { - return valA < valB; - } - return a.key3.length() < b.key3.length(); - } - }; - - std::istream& operator>>(std::istream& in, DataStruct& dest) - { - std::istream::sentry sentry(in); - if (!sentry) - { - return in; - } - DataStruct temp; - bool hasKey1 = false; - bool hasKey2 = false; - bool hasKey3 = false; - in >> DelimiterIO{ '(' }; - in >> DelimiterIO{ ':' }; - while (in && (!hasKey1 || !hasKey2 || !hasKey3)) - { - std::string label; - in >> label; - if (label == "key1" && !hasKey1) - { - in >> LongLongIO{ temp.key1 }; - in >> DelimiterIO{ ':' }; - hasKey1 = true; - } - else if (label == "key2" && !hasKey2) - { - in >> RationalIO{ temp.key2 }; - in >> DelimiterIO{ ':' }; - hasKey2 = true; - } - else if (label == "key3" && !hasKey3) - { - in >> StringIO{ temp.key3 }; - in >> DelimiterIO{ ':' }; - hasKey3 = true; - } - else - { - in.setstate(std::ios::failbit); - return in; - } - } - in >> DelimiterIO{ ')' }; - if (in && hasKey1 && hasKey2 && hasKey3) - { - dest = temp; - } - else - { - in.setstate(std::ios::failbit); - } - return in; - } - - std::ostream& operator<<(std::ostream& out, const DataStruct& src) - { - std::ostream::sentry sentry(out); - if (!sentry) - { - return out; - } - IofGuard guard(out); - out << "(:key1 " << src.key1 << "ll"; - out << ":key2 (:N " << src.key2.first - << ":D " << src.key2.second << ":)"; - out << ":key3 \"" << src.key3 << "\":)"; - return out; - } -} - -int main() -{ - using barinov::DataStruct; - using barinov::DataStructComparator; - - std::vector data; - - while (!std::cin.eof()) - { - DataStruct temp; - if (std::cin >> temp) - { - data.push_back(temp); - } - else - { - std::cin.clear(); - std::cin.ignore(std::numeric_limits::max(), '\n'); - } - } - - std::sort(data.begin(), data.end(), DataStructComparator()); - - std::copy( - data.begin(), - data.end(), - std::ostream_iterator(std::cout, "\n") - ); - - return 0; -} From 5d9675c685d57bb684aa44b174f657c38168f6d0 Mon Sep 17 00:00:00 2001 From: Barinov Egor Date: Tue, 2 Jun 2026 05:00:09 +0300 Subject: [PATCH 10/10] barinov.egor/T3 --- barinov.egor/T3/commands.cpp | 2 +- barinov.egor/T3/commands.hpp | 2 +- barinov.egor/T3/main.cpp | 2 +- barinov.egor/T3/polygon.cpp | 2 +- barinov.egor/T3/polygon.hpp | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/barinov.egor/T3/commands.cpp b/barinov.egor/T3/commands.cpp index 02f81859..170894fb 100644 --- a/barinov.egor/T3/commands.cpp +++ b/barinov.egor/T3/commands.cpp @@ -199,4 +199,4 @@ bool inframeCommand(const std::vector& polygons, const Polygon& target) Point bottomLeft, topRight; getBoundingBox(polygons, bottomLeft, topRight); return isPolygonInBoundingBox(target, bottomLeft, topRight); -} \ No newline at end of file +} diff --git a/barinov.egor/T3/commands.hpp b/barinov.egor/T3/commands.hpp index 48951354..b90cd191 100644 --- a/barinov.egor/T3/commands.hpp +++ b/barinov.egor/T3/commands.hpp @@ -25,4 +25,4 @@ size_t countByVertexCount(const std::vector& polygons, size_t vertexCou size_t echoCommand(std::vector& polygons, const Polygon& target); bool inframeCommand(const std::vector& polygons, const Polygon& target); -#endif \ No newline at end of file +#endif diff --git a/barinov.egor/T3/main.cpp b/barinov.egor/T3/main.cpp index fc3abb72..f080f6f8 100644 --- a/barinov.egor/T3/main.cpp +++ b/barinov.egor/T3/main.cpp @@ -264,4 +264,4 @@ int main(int argc, char* argv[]) } } return 0; -} \ No newline at end of file +} diff --git a/barinov.egor/T3/polygon.cpp b/barinov.egor/T3/polygon.cpp index 1327b065..21d99a49 100644 --- a/barinov.egor/T3/polygon.cpp +++ b/barinov.egor/T3/polygon.cpp @@ -147,4 +147,4 @@ bool isPolygonInBoundingBox(const Polygon& polygon, } } return true; -} \ No newline at end of file +} diff --git a/barinov.egor/T3/polygon.hpp b/barinov.egor/T3/polygon.hpp index 2104a5cf..05ac8813 100644 --- a/barinov.egor/T3/polygon.hpp +++ b/barinov.egor/T3/polygon.hpp @@ -39,4 +39,4 @@ bool isPolygonInBoundingBox(const Polygon& polygon, const Point& bottomLeft, const Point& topRight); -#endif \ No newline at end of file +#endif