From ff4c6cb794c65a9ddc64694bb2bf3d7755378857 Mon Sep 17 00:00:00 2001 From: giarf Date: Mon, 30 Mar 2026 21:35:05 -0300 Subject: [PATCH] add files --- T1/suma.asan | Bin 75480 -> 75512 bytes .../Contents/Resources/DWARF/suma.asan | Bin 23128 -> 23448 bytes T1/suma.bin | Bin 34248 -> 34248 bytes T1/suma.c | 95 +++++++++++------- 4 files changed, 56 insertions(+), 39 deletions(-) diff --git a/T1/suma.asan b/T1/suma.asan index f1db01eb652ff489fa46d28c5a3ffdbce1d4f3eb..7dbaa2931ce9864d431b922bf3e0c9a327126980 100755 GIT binary patch literal 75512 zcmeHwdwkT@weOxxfFwW&4|#;w@Q|077cZf=I7vVe6>Ox6C`=~FgcghOCULpcY@06RXaGh|ghk;PI?mxqe+DTGB@n>jcAtP)!9Q$<5;l`)&*~fL$`b z7BnP&yGv9Xf@xf_EnRa~H6BkW+*A>Yp_BPtaH-;V7Y~wPlV1k&gAV29@dWAvVNbBS zI^+w3Z8E>-FH`*VcnCK6jg3j7`BjF(je+{jT%XMEW#-q!@)2xqCU2_ucq)VSp|}E* z`IWCx^8JHTaUq!WpK9}XydiJBCnjVvKT)RmMTRg3zwKyO_zsgSHWC?3z|VB89+`ORUw5hN0v)g&Ol~0~PsI+iI%- z(>4)>b-S=N|TM41i4%wB{|%_8-0~cVQ)pP&qG{@BjImke1365 zLv5ha8xCLz$X{O>tn%e~8yfOUgY{uweK?fA!nf5|8*K13=C2C|Yb*WUfNrlh8P=GXwxyu?g-ev`y^RRpLXg{#{<`50F6`$rO#VRIWQJXEjyIL!WPPfiPuCu5 zJ#&+z^-QU-PC6&PcHzmJ?*1>Quwa+n8J91x{8`Ru1|9F8ZuzsFQRsGe#vpez!{Ltl zH!=K8hDSN0<*S`h@2MA>|nHK&10vj<}~Bbp-pzmPY+) z≥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 HCdB^*q{uOD literal 75480 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 diff --git a/T1/suma.asan.dSYM/Contents/Resources/DWARF/suma.asan b/T1/suma.asan.dSYM/Contents/Resources/DWARF/suma.asan index 1d829ba4701ff7160819251cb2ac025d0526e217..ab509b7ebc24bac47c8a0f3b87abee130d2817fa 100644 GIT binary patch literal 23448 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 literal 23128 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 F@!!LSmiGVv diff --git a/T1/suma.bin b/T1/suma.bin index 03ef4115d0b66e444f885b99f5ccda82aa81e18a..d0d34be26f1db596923d4a44227fef300d7a7c9e 100755 GIT binary patch delta 1322 zcmY*ZeN0xyV?YQnbXzFQ0PNPOvI<&wxq<{i$p?qWk zn+&d(3^SJ~bD4Y!ro#=4lf{3?AUIq^m(*x<#%`SxTn5x_)bl7!^d-0N{C@9u&-tBu z`red-n{senKN1(czDF{K0uTVG$0c7zmPT@<)9b8>_p_&2GqSD-zjnb-f{V=|I}`c; z3^UF+ZVwk?dm?wTP@6q9-1+p5d&e_(v3f-|Ipq9Yv4!k)^CoW-FL;Dtd(q8Sfm#xU z4{P(Gzaa$1>onkXD^1=$PH;qQYCqK%40G0_Tz_9HHwW5i2Lbzc96;B0Qw-Iyg5cDq zARfBsgJH4R=PUkzgY#ZKY#>Jo)zcglt57ZAx@!Td00>W(fR^woPb@y`_xZ-&tLVQd z5Yh3E&u4HOOyfcjNNxj+_YlZ1qCOJ$%K7B|%K#ZM$OZCcfxXC0plR$S9x|JvVbQ7t z`k?2dsQbJy5EF-nmVL!xxS^u4e5IpttQ8Tjc#ko&7Mu?5gs47wHJ{CSou88t?K9@ZU2E3wnA9@y9#3xn4ZSa@L_X;+D_Ug_v+vZAe1_4xxKZ zJQG5@195#QrGZ!@(GwW26}`-MYZ5s{IIGema1|QXqq!1yL!vwJc{moZ@}(Q!p6Dpr zuQ_8g9J3eUTt;h-vli_$#KpeS)+fBBr+gqU*3bmv{4lBt)G%*gujGR@ix3?8^&@I5}L0N&_~Fnpin3^r}ZP3a2-9;QU{LRmFvdAKSeyd91|LwGivx%>#k zRn^qm%r;2i;Q=dX-ezbI8Y0Cnw~HjoIv!fr=dRZ||R$P94Q+{8}lbxwOe-GJ(JLzWibFOOZqq{6$yg890e$sSdRGGK$ z=DGLps_y5NZ)U%@O~zZEs&-ENw)cnlKi@FU-uTut;F}2Q`0~th+SyALufI(=xZr0KW@NajB3IHI8vR4!jiF>Et{3ZnV3L%kH_kHKw zbH0;zZ^*-iJe>Cy3DVnD2EhnG0H70B^buGwDK{vas-2Ik3hO~Nm=@3dEiOWkg;AY0 z|G&a?AeXD+mO4Nuv>oMW9T8#x^KShbrt@8{WlZeCmxw)c;TYQ^!O zSD^Jzh-cakfUir2Ssy2OtVs}dXG28f2gdwr2xk+BSPg???dOTlZGyEZzoZ@*`=FN# zgOueVpnS^#cq?`^8hTy_0CmUA>PWmnjL^CfC zaS|KR&;Qw|Mhmfej{tVLvmkOT8R+`Rc;;Wc;Lpy5i1Xn_^)nolrD6~4%U(=QBXg`d zxyDG*u5iA>r@_H%h`4l@XLph-ZA)lCr?TU`V$8%cU+AAg6H{nnsH=JPVAs^;CXzDW zM5IX}=|2;JSA|oAaO{D&n<%V6lSgFsoTf&)rKf8II{{1!gngpvz?>rOA&howEwZAg za~M6hhYL^O^sliC+I&p7sy(z{*3f2`3#sm!A*;QrLIfbJ@3W8G3VF|&82r^(Okw$xbwddequV zqEaNCb)=L;OHHQSMVCYR=ookOmM!S%BEawp4{I@Bt6F**c?{<;qr8{wVK2$GnI?%g z#&s{eVWO@CUQJ`)$;U}Pt2FE+{mf;^N$I~vKNL^*t{Wgt74{) zqrBJ)^e5ire~(uj%YSc-#8R%C1HAE}iU@4Yyu+a22}$RHyMkA1p9**(P;9wT$Z9Q* z1=RM8ilTRnz(YtwUO0LJBpzlANUxdjtac8lwZ zBe?$h%18T22Yk`hTDsuV@wKIAe-N8K9gN8LdLX0f{nPvA-~P3f{n8iA6D!Y+b}tu| fUK+Hyx3AC2 #include - #include "suma.h" +// Defina aca las estructuras que necesite + enum { NTHREADS = 8 }; typedef struct { int *a; long long *prefix; int n; - Set start; - Set end; - Set found; -} BuscarArgs; + Set inicio; + Set fin; + Set encontrado; +} ArgsBuscar; static Set total_combinaciones(int n) { if (n >= (int)(sizeof(Set) * CHAR_BIT)) @@ -20,89 +21,105 @@ static Set total_combinaciones(int n) { return ((Set)1 << n) - 1; } -static long long suma_inicial(int a[], int n, Set k) { - long long sum = 0; +static long long suma_subconjunto(int a[], int n, Set k) { + long long suma = 0; for (int i = 0; i < n; i++) { if (k & ((Set)1 << i)) - sum += a[i]; + suma += a[i]; } - return sum; + return suma; } -static Set buscar_rango(int a[], long long prefix[], int n, Set start, Set end) { - if (start == 0 || start > end) +static int contar_unos_finales(Set k) { + int cant = 0; + + while ((k & 1) != 0) { + cant++; + k >>= 1; + } + + return cant; +} + +static Set buscar_rango(int a[], long long prefix[], int n, Set inicio, Set fin) { + if (inicio == 0 || inicio > fin) return 0; - Set k = start; - long long sum = suma_inicial(a, n, k); + Set k = inicio; + long long suma = suma_subconjunto(a, n, k); while (1) { - if (sum == 0) + if (suma == 0) return k; - if (k == end) + if (k == fin) break; - unsigned int shift = (unsigned int)__builtin_ctzll(~k); - sum -= prefix[shift]; - sum += a[shift]; + int cambios = contar_unos_finales(k); + suma -= prefix[cambios]; + suma += a[cambios]; k++; } return 0; } -static void *buscar_thread(void *ptr) { - BuscarArgs *args = ptr; - args->found = buscar_rango(args->a, args->prefix, args->n, args->start, - args->end); +// Defina aca la funcion que ejecutaran los threads + +static void *thread_buscar(void *ptr) { + ArgsBuscar *args = ptr; + + args->encontrado = buscar_rango(args->a, args->prefix, args->n, args->inicio, + args->fin); return NULL; } +// Reprograme aca la funcion buscar Set buscar(int a[], int n) { Set comb = total_combinaciones(n); Set base = comb / NTHREADS; Set extra = comb % NTHREADS; - Set next = 1; + Set siguiente = 1; pthread_t tids[NTHREADS]; - BuscarArgs args[NTHREADS]; + ArgsBuscar args[NTHREADS]; long long prefix[CHAR_BIT * sizeof(Set) + 1]; - int created = 0; + int creados = 0; prefix[0] = 0; for (int i = 0; i < n; i++) prefix[i + 1] = prefix[i] + a[i]; for (int t = 0; t < NTHREADS; t++) { - Set len = base + (Set)(t < (int)extra); + Set largo = base + (Set)(t < (int)extra); args[t].a = a; args[t].prefix = prefix; args[t].n = n; - args[t].start = next; - args[t].end = (len == 0) ? next - 1 - : (t == NTHREADS - 1 ? comb : next + len - 1); - args[t].found = 0; + args[t].inicio = siguiente; + args[t].fin = (largo == 0) ? siguiente - 1 : siguiente + largo - 1; + args[t].encontrado = 0; - if (len != 0) - next = args[t].end + 1; + if (largo != 0) + siguiente = args[t].fin + 1; - if (pthread_create(&tids[t], NULL, buscar_thread, &args[t]) != 0) { - for (int i = 0; i < created; i++) + if (pthread_create(&tids[t], NULL, thread_buscar, &args[t]) != 0) { + for (int i = 0; i < creados; i++) pthread_join(tids[i], NULL); return buscar_rango(a, prefix, n, 1, comb); } - created++; + + creados++; } - Set best = 0; + Set mejor = 0; for (int t = 0; t < NTHREADS; t++) { pthread_join(tids[t], NULL); - if (args[t].found != 0 && (best == 0 || args[t].found < best)) - best = args[t].found; + if (args[t].encontrado != 0 && + (mejor == 0 || args[t].encontrado < mejor)) + mejor = args[t].encontrado; } - return best; + return mejor; }