563
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Generator de teste
|
: Aprilie 13, 2008, 21:13:14
|
pai : un program de generator de teste random: dai afisezi numerele random in fisierul .in (sa zicem ca gen este numit gen.exe) sursa: (sa zicem ca este sursa.exe) care afiseaza raspunsul in nume.out brute-force-ul care afiseaza in .ok si se numeste bf.exe (il poti baga chiar in generatorul de teste random) si verificator care compara ok-ul generat de brute-force cu out-ul generat de sursa ta. si daca esti pe windows(e mai simplu de cat pe linux) faci asa: creezi un fisier .bat in care scrii asta: @echo off call gen.exe call bf.exe call sursa.exe call verif.exe pause
si il rulezi de cate ori vrei tu
|
|
|
572
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: sortari
|
: Aprilie 06, 2008, 09:05:47
|
cam asa arata implementat qsortul din stdlib #include <stdlib.h> #include <memory.h>
void _RTL_FUNC quicksort(const void *base, int lo, int hi, size_t width, int (*compare)(const void *elem1, const void *elem2), char *buf) {
if (hi > lo) { int i=lo, j=hi; char * celem = buf + width; memcpy(celem,((char *)base) + width * ((lo + hi) / 2),width) ;
while (i <= j) { while (i <= hi && (*compare)((char *)base + i * width, celem) <0) i++; while (j >= lo && (*compare)((char *)base + j * width, celem) >0) j--; if (i<=j) { memcpy(buf, (char *)base + i * width, width) ; memcpy((char *)base + i * width, (char *)base + j * width, width) ; memcpy((char *)base + j * width, buf, width) ; i++; j--; } } if (lo<j) quicksort(base, lo, j,width,compare,buf); if (i<hi) quicksort(base, i, hi,width,compare,buf); }
} void _RTL_FUNC qsort(const void *base, size_t num, size_t width, int (*compare)(const void *elem1, const void *elem2)) { char data[512]; char *buf ;
if (width <= sizeof(data)/2) buf = data; else { buf = malloc(width) ; if (!buf) return ; } quicksort(base,0,num-1,width, compare,buf) ;
if (buf != data) free(buf) ; }
cam cum ar arata un quicksort cu pivot random (dau pivot=rand()%n )?
|
|
|
|