infoarena

Comunitate - feedback, proiecte si distractie => Off topic => Subiect creat de: Silaghi Raul din Februarie 09, 2007, 17:51:15



Titlul: How it's made ( situ infoarena ) ?
Scris de: Silaghi Raul din Februarie 09, 2007, 17:51:15
eu sunt foarte curios cum functioneaza sistemul de evaluare al problemelor de pe site asa ca am deschis scest subiect pentru intrebari legate de cum functioneaza situl  :D 


Titlul: Raspuns: How it's made ( situ infoarena ) ?
Scris de: Cristian Strat din Februarie 09, 2007, 19:45:06
http://infoarena.ro/documentatie/evaluator


Titlul: Raspuns: How it's made ( situ infoarena ) ?
Scris de: Silaghi Raul din Februarie 17, 2007, 14:57:03
Eu ma referam la un algoritm PHP sau chiar cod ... NU abureala aia din documentatie  :angry:  [-X


Titlul: Raspuns: How it's made ( situ infoarena ) ?
Scris de: Mircea Pasoi din Februarie 17, 2007, 15:14:47
Eu ma referam la un algoritm PHP sau chiar cod ... NU abureala aia din documentatie  :angry:  [-X

Daca ai citi documentatia disponibila pe site ai vedea (http://infoarena.ro/developer) ai vedea ca poti gasi si codul sursa...  :horsy:


Titlul: Raspuns: How it's made ( situ infoarena ) ?
Scris de: Bogdan-Cristian Tataroiu din Februarie 17, 2007, 15:28:11
http://infoarena.ro/documentatie/development :)


PS: de ce nu mai sunt moderator? :-'


Titlul: Raspuns: How it's made ( situ infoarena ) ?
Scris de: Mircea Pasoi din Februarie 17, 2007, 16:01:51
PS: de ce nu mai sunt moderator? :-'

Nu stiu, e un bug dubios  #-o .. acum esti


Titlul: Raspuns: How it's made ( situ infoarena ) ?
Scris de: Sima Cotizo din Februarie 18, 2007, 22:58:26
Eu ma referam la un algoritm PHP sau chiar cod ... NU abureala aia din documentatie  :angry:  [-X

Ca tot veni vorba, mi se pare ca in directorul jrun aveti voi evaluatorul... O intrebare : [dupa ce am citit codul sursa] sigur memoria ocupata de proces e in /proc/$pid$/statm ?... sau sigur e campul pe care il cititi voi?... pentru ca pe tests/1meg.c [compilat] imi zice 8 kb memorie...

Stiti cum se poate sa afli cata memorie foloseste un program la executie? ... ca am cautat mult si nu am gasit, iar jrun.c  zice ceva dubios  ???, am incercat cu sursele de la alte probleme si sigur da niste valori cam mici...


Titlul: Raspuns: How it's made ( situ infoarena ) ?
Scris de: Dan-Leonard Crestez din Februarie 18, 2007, 23:39:32
Cum adica iti zice 8kilo memorie?

Pe sistemul tau trec testele de jrun? ./run-tests.php tests/1meg.c or something

Ce versiune de linux ai?


Titlul: Raspuns: How it's made ( situ infoarena ) ?
Scris de: Sima Cotizo din Februarie 19, 2007, 22:12:42
Cum adica iti zice 8kilo memorie?

Dubios, acum merge pe 1meg da memory limit exceeded cand dau -m 1024... dar imi zice ca as folosi ba 3MB, ba 4MB...
am mai facut un program :
Cod:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

long *a;

int main() {
    int i;

    a = (long*) malloc(1024*1024);
    for (i=0; i<262144; ++i)
        a[i] = i;
    return 0;
}
malloc stiu ca aloca atatia bytes cati ii specifici [nu biti]... eu am zis acolo 1MB si in for folosesc 256KB... totusi:

./jrun -p ./tests/mytest -m 1024
OK: time 4ms memory 12kb: Execution successful.
???

Citat
Pe sistemul tau trec testele de jrun? ./run-tests.php tests/1meg.c or something
ummm recunosc nu am folosit ./run-tests.php, am crezut ca e chiar script de php...

./run-tests.php tests/1meg.c
/usr/bin/env: php: No such file or directory

Nu stiu cu ce il rulati voi [eu am php instalat]... poate nu e configurat cum trebuie... oricum am incercat totusi cu ./jrun

Citat
Ce versiune de linux ai?

cat /proc/version
Linux version 2.6.15-28-386 (buildd@terranova) (gcc version 4.0.3 (Ubuntu 4.0.3-1ubuntu5)) #1 PREEMPT Thu Feb 1 15:51:56 UTC 2007


Titlul: Raspuns: How it's made ( situ infoarena ) ?
Scris de: Bogdan-Cristian Tataroiu din Februarie 19, 2007, 22:27:20
Stiu ca mie pe Ubuntu nu-mi mergea calumea decat daca era rulat cu sudo (nu stiu daca ai incercat asta si nici nu stiu motivu pentru care se intampla asta :) ) :P


Titlul: Raspuns: How it's made ( situ infoarena ) ?
Scris de: Sima Cotizo din Februarie 19, 2007, 22:40:15
sudo ./jrun -p ./tests/mytest -m 20
Password:
OK: time 4ms memory 12kb: Execution successful.

ummm... tot 12 da... sigur malloc aloca 1 mega in programelul ala?
Cod:
    a = (long*) malloc(1024*1024);
    for (i=0; i<262144; ++i)
        a[i] = i;
altceva nu vad de la ce sa fie, decat campul din care citeste sa fie diferit la mine sau gresit :(... si tind sa cred ca e programelul meu gresit cu ceva...

PS: Si da, nu m-am gandit sa il rulez asa :D:P


Titlul: Raspuns: How it's made ( situ infoarena ) ?
Scris de: Bogdan-Cristian Tataroiu din Februarie 19, 2007, 22:45:38
Nu stiu cu ce il rulati voi [eu am php instalat]... poate nu e configurat cum trebuie... oricum am incercat totusi cu ./jrun
Ca sa rulezi php in linie de comanda iti trebuie pachetu php5-cli (command line interpreter).


Titlul: Raspuns: How it's made ( situ infoarena ) ?
Scris de: Dan-Leonard Crestez din Februarie 20, 2007, 00:00:10
Codul asta:

a = (long*) malloc(1024*1024);
for (i=0; i<262144; ++i)
        a = i;

Consuma 1 mega, pentru ca a este 4 bytes. Faptul ca tie iti zice 12k probabil ca este un bug :).


Titlul: Raspuns: How it's made ( situ infoarena ) ?
Scris de: Sima Cotizo din Februarie 20, 2007, 08:53:07
Ah, da... calculasem eu ceva cand l-am facut :) ... Bine dar bug unde sa fie ? [am vazut si prin monitor ca cele mai frecvente valori pt memoria folosita sunt 8kb si 12kb... ]

Ce pot face ca sa functioneze corect?


Titlul: Raspuns: How it's made ( situ infoarena ) ?
Scris de: Bogdan-Cristian Tataroiu din Februarie 20, 2007, 09:29:18
Daca compilez sursa ta fara O2 sau static din 20 rulari pe vreo 5 imi foloseste 8-16 kb si pe celelalte 1332 kb :banana:
Daca compilez sursa ta cu O2 sau cu static foloseste tot timpul 8-16 kb de memorie. Cred ca sunt doar optimizari dubioase ale C-ului :) Nu prea e bug :P

Daca in schimb folosesc codul:
Cod:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

long *a;

int main() {
        int i;

        a = (long*) malloc(1024*1024);
        for (i=0; i<262144; ++i)
                a[i] = i;

        freopen("tmp.out", "wt", stdout);
        for (i = 0; i < 262144; i++)
                printf("%ld\n", a[i]);
        return 0;
}
Merge tot timpul bine si foloseste cam 1300 kb de memorie. :monkey:


Titlul: Raspuns: How it's made ( situ infoarena ) ?
Scris de: Sima Cotizo din Februarie 20, 2007, 10:08:00
Foarte dubios  :eyebrow:, dar ai dreptate :) Inseamna ca poate fi folosit cu incredere in testarea unor surse ca sa vedem daca intra in memorie / timp :)

Multumesc mult de ajutor!