Afişează mesaje
|
Pagini: [1] 2
|
1
|
Comunitate - feedback, proiecte si distractie / Blog / Răspuns: C++ compiler upgrades on infoarena
|
: Aprilie 28, 2013, 15:05:08
|
Era si cazul  . Multumim !  The g++ 4.8 compiler also has some nice optimizer improvements, most of which are available since g++ 4.7 . Inline functions will be optimized even further if the compiler knows some additional information about function's parameters. inline int a (int x) { if (x < 0) { // big code... } else { // big code... } return x; }
For a(-1) the compiler will write just half of the code now. This feature is great if you inline large functions which are called many times. Also non-inline functions are optimized. void f (bool x) { if (!x) // code ... else // code ... }
int main (void) { // code... f(true); f(false); f(true); f(false); f(true); f(false); //code... }
g++ will now produce two copies of f. One with x being true, while other with x being false. This leads to performance improvements previously possible only by inlining all calls. Cloning causes a lot less code size growth. A string length optimization pass has been added since g++ 4.7. It attempts to track string lengths and optimize various standard C string functions ( strlen, strchr, strcpy, strcat, stpcpy and so on...). void x (char *a, char *b, char *c, char *d) { strcpy (a, b); strcat (a, c); strcat (a, d); }
becomes
void x (char *a, char *b, char *c, char *d) { strcpy (stpcpy (stpcpy (a, b), c), d); }
|
|
|
4
|
Comunitate - feedback, proiecte si distractie / Feedback infoarena / Răspuns: Bug reports
|
: Martie 13, 2013, 14:22:57
|
Am vorbit cu el si spune ca nu e "opera" lui. Eu nu stiu ce sa cred, nu pot sa acuz pe nimeni de nimic pana cand nu e clar cine e vinovat. Daca aflam totusi cine e avem la dispozitie multe metode sa il calmam  . Din pacate un simplu 'ban' nu rezolva prea multe  OFF : Personal, daca m-as intalni cu el m-as abtine cu greu sa nu il lovesc. Asta e bataie de joc la adresa utilizatorilor. Din fericire pentru el nu cred ca o sa-l confrunte nimeni. Nu poti sa cobori la nivelul ala.
|
|
|
6
|
Comunitate - feedback, proiecte si distractie / Off topic / Răspuns: OJI 2013: Cum sa ne asiguram ca ne calificam la nationala?
|
: Februarie 13, 2013, 19:58:42
|
Ma bucur ca cineva a deschis subiectul asta, si eu eram curios sa aflu alte pareri  Lucreaza cat mai mult  . In orele plictisitoare de la scoala (nu zic care sunt alea, fiecare are alta parere) pune mana pe creion si hartie si baga o problema. Acasa lucreaza cat mai mult pe infoarena  . "Nu am chef", "Ma apuc putin mai tarziu", "Oricum stiu, nu are rost sa mai fac" nu cred ca o sa te ajute la OJI  In cazul in care dai peste o problema care nu iti iese, chinuie-te vreo 2 ore. Daca pur si simplu nu iti iese problema de 100 si consideri ca nu merita mai mult timp, parerea mea este sa eviti sa intrebi repede pe altcineva. Uita-te peste solutii si incearca sa le intelegi singur, eventual poate te inspiri de acolo si scoti o rezolvare diferita. In cel mai rau caz (daca nu ai cunostintele teoretice spre exemplu), roaga pe cineva sa te ajute. Eu zic sa nu lasi ceva neterminat, adica daca tot te-ai apucat de ea, du-o pana la capat, chiar daca dureaza o luna  . Asta insa e doar parerea mea, nu o lua ca pe un sfat. Altii de exemplu considera ca o rezolvare de 80 - 90 de puncte la unele probleme este ok, iar in timpul pe care l-ar pierde cu optimizarea ar putea sa mai faca vreo 2 probleme. Mie mi se par ambele variante ok si ambele dau rezultate bune. A doua sincer pare mai ok, dar eu personal sunt mai incapatanat . Ajuta-i pe toti care te intreaba, pentru ca te ajuti si pe tine in acelasi timp. Explicandu-i cuiva, nu numai ca intelegi si tu mai bine, iti reimprospatezi memoria, dar gandintu-te inca odata, ai sanse sa iti dai seama ca poate ai gresit undeva, si ceea ce explici nu e bine, sau poate fi facut mult mai bine / mai usor. Pregateste-i la info si pe olimpicii de a 9-a, ai mari sanse sa vezi o problema diferit fata de cum ai vazut-o acum un an. Acasa incearca de obicei sa scrii relativ rapid, dar ai grija de cod, sa fie clar si sa nu "mananci" litere. La concurs nu te apuca de scris imediat dupa ce ai rezolvat exemplul, incerca macar vreo 5-10 minute sa-ti gasesti cazuri care nu merg pe ideea ta. In legatura cu mentalitatea, eu personal tot timpul imi propun sa fac 0 puncte  . Astfel, in cel mai rau caz iau minim cat mi-am propus si nu prea sunt dezamagit. Bineinteles, gandul asta cu 0 puncte e valabil doar inainte si dupa concurs, in timpul concursului el dispare instant . Domnul profesor mi-a spus de un elev care a participat la ONI (mai demult) si a luat 0 puncte. Normal, se mai intampla. Totusi, i s-a luat un interviu, unde a fost intrebat : "-De ce crezi tu ca ai obtinut acest rezultat slab ?" El : "Da cine-a zis ca-i slab  ?" Decat sa stai sa regreti greselile pe care le-ai facut la concurs, mai bine pune-te si rezolva niste probleme  Deci, multa bafta si sper sa ne vedem la ONI 
|
|
|
7
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 492 Sudest
|
: Februarie 06, 2013, 13:01:34
|
La prima vedere tind sa cred ca te folosesti de stack la parcurgerea in latime.  Acolo bagi punctele pe care ai ajuns si dupa aceea te extinzi de la ele mai departe. Vad ca folosesti si un v pe acolo... in principiu sursa e brainfuck  . Iti zic cum am facut eu si poate asa stii daca ai gresit undeva : Deci am facut ceva asemanator cu parcurgerea in latime, doar ca mergi numai in sud / est . Am pastrat punctele (coord) intr-o coada de dimensiune 101 * 101 * 2 . Cand reconstituiam drumul era mult mai simplu, ma duceam direct nord-vest pornind de la destinatie. Dinamica o stii tu mai departe  . Nu am vazut nimic declarat atat in sursa ta, deci poate aici e greseala. Asta s-ar putea sa fie cauza la SIGSEGV. La MLE s-ar putea sa fie din cauza ca nu se opreste recursiva (a si b sa nu mai ajunga 1) . Vreo 240 kb vin din cauza bibliotecii <cstdio> , nu au legatura cu sursa ta. P.S. Cred ca ar trebui sa fie si testele de la OJI pe net. Vezi pe care iti pica.
|
|
|
12
|
infoarena - concursuri, probleme, evaluator, articole / Infoarena Monthly 2012 / Răspuns: Placute
|
: Decembrie 27, 2012, 15:22:51
|
@ Mihai22e Eu am o abordare greedy, folosit o coada, initial goala. Am sortat mai intai porcii dupa greutate. Am pornit de la ultimul porc (cel cu greutatea cea mai mare) pana la cel cu greutatea cea mai mica. Cand nu puteam sa iau un porc din sir, treceam "peste" el si il puneam in coada. Aici iti dai seama, cum sirul este sortat, restu porcilor ramasi in sir au greutatile mai mici decat ale celor din coada. Deci, la fiecare pas, incerc sa iau un porc mai intai din coada. Daca nu aveam nici un porc disponibil in coada, luam urmatorul din sir, pana cand nu mai pot sa iau nici un porc. Am facut eu un exemplu, pentru ca pe cel de la problema nu se vede greedy-ul. Deci sunt 6 porci pe care ii sortezi. Sortare : Il iau pe primu : 6,2 Nu am nimic in coada, deci incerc sa il iau pe 5,2 . Nu pot sa il iau, deci il bag in coada. il iau pe 4,3 . Urmatorul pas, ma uit in coada si il scot pe 5,2 . Urmatorul pas, incerc sa ii iau pe 3,2 si pe 2,2 dar nu pot. Il iau pe 1,1. Acum am terminat elementele din sir, dar mai am coada. E evident ca in coada nu pot sa fie decat porci cu aceeasi culoare, deci pur si simplu il scot pe primu din coada, daca exista vreunu. Deci il scot pe 3,2 din coada si am terminat. Solutia optima 6 + 4 + 5 + 1 + 3 = 19. Sper ca am reusit sa iti dau o idee  . Nu prea sunt asa bun la explicatii. P.S. Trebuia folosit long long http://infoarena.ro/job_detail/842995
|
|
|
15
|
infoarena - concursuri, probleme, evaluator, articole / .com 2012 / Răspuns: X
|
: Decembrie 22, 2012, 13:17:41
|
Daca avem 5 4 1 bYdYb abac 3 3 ,atunci avem o singura secventa palindrom (bYXYb) ? Cu alte cuvinte, daca nu am reusit sa extindem un pas din cauza celui de-al doilea sir, dar pasul urmator ar fi un palindrom valid, continuam extinderea si ignoram pasul curent ?
|
|
|
19
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 748 Toys
|
: Noiembrie 03, 2012, 16:09:02
|
Deci avem 5 copii si 100 de jucarii ramase in camera lui Gigel. Holul ce trebuie parcurs are lungimea 101. Copii sunt asa : 1 : d = 84 si t = 1, inseamna ca va lasa jucaria in camera in 101 - 84 timp, si se va intoarce sa ia una noua dupa ce parcurge holul inapoi, adica 17 + 101 = 1182 : d = 56 si t = 1, deci lasa jucaria in camera in 101 - 56 si apoi se intoarce in sufragerie. 45 + 101 = 1463 : d = 43, t = 0, ia alta jucarie din sufragerie in 434 : d = 65, t = 0, ia alta jucarie din sufragerie in 655 : d = 2, t = 1, ajunge in camera in 99 si se intoarce in 101 => 200M-am gandit ca solutia reprezinta timpul in care este adusa a 100-a jucarie. Fiecare aduce pe rand cate o jucarie, in ordinea distantei calculate anterior. Cum 100 % 5 e 0, am dedus ca cel numerotat cu 5 va aduce ultima jucarie (adica ultimul in ordinea distantelor). Fiecare a carat 20 de jucarii, deci el va parcurge de 19 ori holul dus-intors si o data dus. 200 + 20 * 202 - 101 (drumul de intoarcere dupa ultima jucarie nu il mai pun) = 4139  Va rog frumos, poate cineva sa imi dea un hint unde gresesc ?  L.E. Data viitoare ma dau cu capu' de un perete inainte sa pun o intrebare pe forum  . Enuntul este formulat destul de clar, nu am fost eu atent  Doar in cazul in care cineva va mai avea neclaritatile mele : copilul 1 duce ultima jucarie in camera in 185 + 20 * 202 - 101 = 4124
|
|
|
|