Documente Academic
Documente Profesional
Documente Cultură
I. InfoCNTV la C.N.T.V.
10
Elemente de combinatoric
10
14
transcendente
Cum ne influeneaz viaa invazia de bii?
17
18
21
26
26
37
38
38
39
40
41
43
43
45
45
Informatica n rime
45
46
I.
InfoCNTV la C.N.T.V.
Pentru toi cei care au trecut pragul acestei coli - elevi, absolveni, profesori,
C.N.T.V. ne poart cu gndul ctre Cunoatere, Noutate, Tradiie, Valoare.
i pentru c msura valorii unei coli rezid nu numai n valoarea profesorilor
dar, mai ales, n reuita n via a elevilor pe care i-a format, cu o tradiie de 22 de ani,
profilul Matematic Informatic a adus colegiului, n timp, elevi de excepie care au
devenit absolveni cu strlucite cariere n IT. De aceea, am considerat c cea mai
frumoas idee a acestei reviste, pe lng consistena informatic, este aceea de a
cunoate (reaminti) civa dintre ei, care au rspuns, cu drag, invitaiei de a ne fi
alturi n acest demers.
Pentru acest prim numr al revistei de Informatic, cel mai potrivit argument
pentru a v convinge s parcurgei paginile revistei noastre, sunt rndurile scrise de
Andrei Homescu, olimpic naional la Informatic al C.N.T.V., actualmente doctorand la
U.C. IRVINE-USA, un exemplu care poate insufla inspiraie i poate nsuflei imaginaia
actualilor elevi, determinndu-i s-i cldeasc visurile pe studiu i seriozitate.
Ateptm i totodat invitm toi absolvenii s fac parte din proiectul nostru de
a readuce alturi marea familie a IT - itilor C.N.T.V. -iti, care ne reprezint cu cinste pe
mapamond (i v vei convinge c este aa, citind n continuare).
coordonatele colului stnga sus ale submatricei A sunt (x1,y1), iar coordonatele colului dreapta
jos sunt ((x2+x1)/2,(y2+y1)/2);
- CM este irul *CACBCCCD unde CA, CB, CC, CD sunt irurile de caractere obinute, n ordine, prin
compresia matricelor A, B, C, D utiliznd acelai algoritm;
d) dac matricea este format din caractere diferite, are o singur linie i mai multe coloane atunci CM
este irul *CACB unde A, B, CA, CB au semnificaia descris la punctul c);
e) dac matricea este format din caractere diferite, are mai multe linii i o singur coloan atunci CM
este irul *CACC unde A, C, CA, CC au semnificaia descris la punctul c).
Cerin
Dat fiind irul de caractere CM ce se obine n urma aplicrii algoritmului de compresie asupra unei matrice M
de dimensiune NxN s se determine:
a) numrul de mpririi care au fost necesare pentru obinerea textului compresat;
b) matricea iniial din care provine textul compresat.
Date de intrare
Fiierul de intrare compresie.in conine pe prima linie un ir de caractere ce reprezint textul compresat.
Date de ieire
Fiierul de intrare compresie.out conine:
- pe prima linie un numr natural ce reprezint numrul nr de mpririi care au fost necesare pentru
obinerea textului compresat;
- pe urmtoarele N linii se gsesc cte N caractere, ce reprezint, n ordine, liniile matricei iniiale.
Restricii i precizri
2 N 1000
0 nr 1000000
1 lungimea irului compresat 1000000
Textul memorat iniial n matricea M conine numai caracterele din mulimea literelor mici {a...z}.
Pentru rezolvarea corect a cerinei a) se acord 20% din punctaj, iar pentru rezolvarea corect a
ambelor cerine se acord tot punctajul.
Exemple
compresie.in
*4b*bbab4a*abbb
*4a*ab*aba
compresie.out
3
bbbb
bbab
aaab
aabb
3
aaa
aab
aba
Explicaii
Au fost efectuate 3 mpriri:
b b b b a a a b
1) M *
b b a b a a b b
b b
a b
2)
3)
*(b)(b)( a )(b)
*(a )(b)(b)(b)
a b
b b
a
2) *(a )(b)
b
3) a b *(a)(b)
Cerina 3
Rezolvarea cerinelor problemei se face prin divide et impera.
Reinem matricea prin colul stnga sus (x1,y1), respectiv colul dreapta jos (x2,y2).
Vom parcurge irul compresat cu variabila k.
divide
mx = (x2 + x1) / 2; my = (y2 + y1) / 2;
// reconstruiesc submatriciile A,B,C,D
divide (x1, y1, mx, my);
//A
divide (x1, my + 1, mx, y2);
//B
divide (mx + 1, y1, x2, my);
//C
divide (mx + 1, my + 1, x2, y2); //D
stpnete
- Dac x1=x2 && y1==y2 atunci M[x1][x2] = sir[k]
- Daca sir[k] {0..9} atunci se va forma numrul x, iar submatricea definit de
coordonatele colului stnga sus (x1,y1) i de coordonatele coltului dreapta jos (x2,y2) va fi
completat cu caracterul din ir asociat numrului format.
Nu este necesar etapa combin.
Sursa C++
1. # include <cstdio>
2. # include <cmath>
3. # include <cstring>
4. using namespace std;
5.
6. char s[1000001];
7. char M[1001][1002];
8. int L, N, nr, i, j, k;
9. void reconstruieste(short x1, short y1, short x2, short y2)
10.
{
11.
short mx, my, x, i, j;
12.
13.
//conditia de oprire
14.
if (x1<=x2 && y1<=y2 && k<L)
15.
{
16.
//stapaneste
17.
if (x1==x2 && y1==y2) M[x1][y1] = s[k++];
18.
else
19.
if (s[k]>='0' && s[k] <='9')
20.
{
21.
x = 0;
22.
while (s[k]>='0' && s[k]<='9')
23.
{
24.
x = x*10 + (s[k] - '0');
25.
++k;
26.
}
27.
//completez submatricea
28.
for (i=x1; i<=x2; ++i)
29.
for (j=y1; j<=y2; ++j)
30.
M[i][j] = s[k];
31.
++k;
32.
}
33.
else //s[k] == '*'
34.
{
35.
//divide
36.
mx = (x2 + x1) >> 1; my = (y2 + y1) >> 1;
37.
++k;
38.
// reconstruiesc submatricile A, B, C, D
39.
//A
reconstruieste(x1, y1, mx, my);
40.
//B
reconstruieste(x1, my + 1, mx, y2);
41.
//C
reconstruieste(mx + 1, y1, x2, my);
42.
reconstruieste(mx + 1, my + 1, x2, y2); //D
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
}
}
}
int main()
{
freopen("compresie.in", "r", stdin);
freopen("compresie.out","w", stdout);
fgets(s, 1000001, stdin);
L = strlen(s);
//punctul 1 si 2
k = 0; nr = 0; j = 0;
for (i=0; i < L; ++i)
if (s[i] == '*') ++nr;
else if (s[i]>='0' && s[i]<='9') k = k*10 + (s[i] - '0');
else if (s[i]>='a' && s[i]<='z')
{
if (s[i-1]<'a' && k) j+=k, k=0;
else ++j;
}
N = (int) sqrt((double) j);
printf("%d %d\n", nr, N);
//punctul 3
k=0;
reconstruieste(1,1,N,N);
for (i=1; i<=N; ++i)
{
for (j=1; j<=N; ++j)
printf("%c", M[i][j]);
printf("\n");
}
return 0;
}
Problema 2 - cool
Date de ieire
Dac valoarea lui p este 1, se va rezolva numai punctul a) din cerin.
Fiierul de ieire cool.out va conine pe prima linie un numr natural, numr ce reprezint conform cerinei
a) maximul secvenei A1, A2,, AK dac secvena este secven cool, sau numrul elementelor distincte din
secven, dac aceasta nu este secven cool.
Dac valoarea lui p este 2, se va rezolva numai punctul b) din cerin.
Fiierul de ieire cool.out va avea dou linii. Prima linie conine un numr natural nenul ce reprezint
lungimea maxim a unei secvene cool, iar urmtoarea linie un numr natural nenul ce reprezint numrul de
secvene cool care au lungimea maxim.
Restricii i precizri
1 N 5000
2 K 1000
1 A[i] 1000, 1 i N
Pentru 30% dintre teste N 1000
Pentru rezolvarea primei cerine se acord 20% din punctaj, iar pentru cerina a doua se acord 80% din
punctaj.
Exemple
cool.in
1
7 4
6 4 5 7 8 3 5
cool.in
1
7 6
6 4 5 7 5 4 3
cool.out Explicaie
7
Atenie! Pentru acest test se rezolv doar cerina a).
Secvena 6 4 5 7 este cool.
Valoarea maxim din secven este 7
cool.out Explicaie
2
Atenie! Pentru acest test se rezolv doar cerina a).
Secvena 6 4 5 7 5 4 nu este secven cool. Numrul
valorilor distincte din secven este 2. Valorile distincte sunt:
6,7
cool.in
cool.out Explicaie
2
5
Atenie! Pentru acest test se rezolv doar cerina b).
11 4
2
Cele dou secvene cool de lungime maxim 5 sunt:
7 4 5 6 8 4 5 7 4 3 2
7 4 5 6 8
6 8 4 5 7
Timp maxim de execuie/test: 0.5 secunde.
Memorie total disponibil: 2 MB, din care 1 MB pentru stiv
Descriere soluie cool
Cerina a) ( 20 puncte)
Printr-o simpl verificare a frecvenei de apariie a primelor k numere se obine rspunsul ateptat.
Cerina b . ( 80 puncte)
O soluie brute-force obine 25p. O soluie bazata pe set(stl) obine 40-50p.
Rezolvarea cerinei b) pentru a obine cele 100p necesit cteva observaii.
Fie secvena ce conine k numere consecutive distincte:
x+1, x+2, ... , x+k
Observm c:
1) min = x+1, max = x + k => max - min == k-1
2) elementele sunt distincte
3) relaia 1) este adevrat indiferent de ordinea elementelor
Aadar,
- pentru orice secvena care ncepe pe poziia i i se termina pe poziia j se va determina minimul i
maximul
- secvena este cool daca respect relaiile 1) si 2)
Astfel, complexitatea rezolvrii subpunctului b) poate fi redus la O(N*k) amortizat.
Sursa C++
1. # include <cstdio>
2. # include <cstring>
3. # define NMax 5003
4. # define Nmax 1003
5. using namespace std;
6.
7. int a[NMax], ap[Nmax];
8. int n, Max, nr;
9.
10.
void cool()
11.
{
12.
int i, j, k, min, max;
13.
for (i=1; i < n; ++i)
14.
{
15.
min = a[i]; max = a[i];
16.
ap[a[i]] = 1;
17.
for (j=i+1; j<=n; ++j)
18.
{
19.
if (ap[a[j]]) break;
20.
ap[a[j]] = 1;
21.
if(a[j] < min) min = a[j];
22.
if(a[j] > max) max = a[j];
23.
k = j - i + 1;
24.
if(max - min == k - 1)
25.
{
26.
if (k > Max) Max = k, nr = 1;
27.
else if (k == Max) ++nr;
28.
}
29.
}
30.
memset(ap, 0, sizeof(ap));
31.
}
32.
}
33.
int main()
34.
{
35.
int i, k, p, Min = 1001, nr_dist = 0;
36.
freopen ("cool.in", "r", stdin);
37.
freopen ("cool.out","w", stdout);
38.
scanf("%d", &p);
39.
scanf("%d %d", &n, &k);
40.
for (i=1; i<=n; ++i)
41.
scanf("%d", &a[i]);
42.
if (p == 1)
43.
{
//a
44.
for (i=1; i<=k; ++i)
45.
{
46.
ap[a[i]]++;
47.
if (a[i] < Min) Min = a[i];
48.
if (a[i] > Max) Max = a[i];
49.
}
50.
for (i=Min; i<=Max; ++i)
51.
if (ap[i] == 1) ++nr_dist;
52.
if (nr_dist == k) printf("%d\n", Max);
53.
else printf("%d\n", nr_dist);
54.
}
55.
else
56.
{
//b
57.
cool();
58.
printf("%d\n%d\n", Max, nr);
59.
}
60.
return 0;
61.
}
Acest articol i propune s insiste mai mult pe algoritmi ce necesit cunotine de combinatoric.
Evident c sunt necesare cunotine matematice de baz din teoria mulimilor i a numerelor, iar
cunotinele i abilitile algoritmice nu trebuie ignorate.
i o funcie
, unde
i
sunt mulimi finite, astfel nct
i
,
.
Acestei funcii i se pune in coresponden o aranjare a mulimii de obiecte n mulimea de
csue, astfel nct n csua s intre obiectele din mulimea
.
Propoziie 1: Numrul funciilor
este egal cu
, unde
, notat cu
i
, este egal cu
.
csue sunt:
.
Aranjamentele cu repetiie ce se pot forma cu aceste trei obiecte luate cte dou
.
funcia bijectiv
Invers, cuvntului
Vom nota:
folosind
simboluri este cu
(combinri cu repetiie)
Propoziie 5: Numrul de cuvinte strict cresctoare de lungime
(combinri)
folosind
simboluri este cu
Exemplu:
,
;
Combinrile de
obiecte ale lui n
csue sunt:
.
Fie
Combinrile cu repetiie ce se pot forma cu aceste trei obiecte luate cte dou
sunt:
1. Permutri
Se numete permutarea identic a mulimii
, permutarea
pentru care
obiecte cu
cu
inversiuni
n csuele
obiecte, , n sa avem
obiecte de tip
poziii ale
~
Anm n m
obiectele pe n poziii?
~
Ank
Cnkk11 Cnnk 1
3. Combinri
~m
~m
Cnk Cnnk
1 n 1
0 n
Implementri sugerate
Generarea permutrilor
backtracking recursiv
# include <fstream>
using namespace std;
ifstream f(permutari.in);
ofstream g(permutari.out);
int N, st[101], k, ap[101];
void tipar(int k){
for(int i=1; i<=k; ++i)
g << st[i] << ;
g << \n;
}
void back(int k)
{
int x, ev;
for(x=1; x<=N; ++x)
{
st[k] = x;
ev = (ap[st[k]] == 0);
if (ev){
ap[st[k]]=1;
if(k == N) tipar(k);
else back(k + 1); //urcam in stiva
ap[st[k]] = 0;
}
}
}
int main()
{
f >> N;
back(1);
return 0;
}
folosind next_permutation
# include <fstream>
# include <algorithm>
# include <vector>
12
void comb(int N)
{
int i, j;
L0[0] = L0[1] = 1; // linia 1
for (i=2; i<=N; ++i)
{
L0[i-1] = 1;
for (j=1; j<i; ++j)
L[j] = L0[j-1] + L0[j];
L[i] = 1;
//copiem linia curenta
for (j=0; j<=i; ++j)
L0[j] = L[j];
}
}
Bibliografie
[1.] Ioan Tomescu, Combinatorica si teoria grafurilor, Tipografia Universitatii Bucuresti, 1978;
[2.] Ioan Tomescu, Probleme de combinatorica si teoria grafurilor, EDP, Bucuresti, 1981;
[3.] www.infoarena.ro
13
a x
n
a n 1 x
n 1
............ a1 x a0 0, x
1
C, ai
C, i
{1,2,3,...n}, a n 0
ntr-o ecuaie algebric se realizeaz numai operaii algebrice ca adunri, scderi, nmulirii,
mpriri, ridicri la putere sau extrageri de radicali.
Dac o ecuaie nu poate fi redus la o ecuaie algebric folosind operaiile de mai sus se
numete ecuaie transcendent (ecuaii exponeniale, ecuaii logaritmice, ecuaii trigonometrice).
A rezolva o ecuaie nseamn a-i determina rdcinile sau soluiile ecuaiei, adic acele numere
C pentru care f()=0. Dac pentru ecuaiile algebrice se pot obine
forme generale ale soluiilor i se pot stabili propoziii n legtur cu
numrul lor, acest lucru nu mai e posibil pentru ecuaiile transcendente.
Prezentm mai jos o metod de rezolvare a ecuaiilor algebrice
transcendente:
Metoda njumtirii(biseciei) intervalului
Fie ecuaia :
f(x)=0 unde f:[a,b] R , f continua
(1)
f(a)<0 i f(b)>0
(2)
Vom demonstra c ecuaia are cel puin o soluie n [a,b].
tim c orice funcie continu pe un interval are proprietatea lui Darboux pe acel interval, adic:
() x1, x2 [a, b], x1 x2 i oricare ar fi numrul c situat ntre f ( x1 ) i f ( x2 ) (exist cel puin un
punct x ( x1 , x2 ) astfel nct f(x)=c. f(b).
Notm cu c mijlocul intervalului [a,b] adic c=(a+b)/2. Definim a1=a i b1=c dac f( c)>0 respectiv a1=c
i b1=b, dac f( c)<0.
Dac f(c)=0, atunci soluia ecuaiei este c.
n caz contrar f:[a1,b1]R ndeplinete aceleai condiii iniiale(1), (2) dar lungimea domeniului de
definiie este redus la jumtate.
Metoda poate fi continuat prin alegerea mijlocului [a1, b1] iar noul interval [a2, b2] va fi definit n
acelai mod c cel precedent.
Deci, metoda njumtirii intervalului const n ncadrarea succesiv a soluiei ecuaiei n intervale din
ce n ce mai fine sau altfel spus const n definirea a trei iruri { an},{bn},{cn} care sunt convergente la
soluia ecuaiei f(x)=0.
Demonstrm urmtoarele:
Proprietatea 1:
irul { an} este monoton cresctor i irul { bn} este monoton descresctor.
Demonstraie : Calculm
bn an= bn-1- cn-1= bn-1-( an-1+ bn-1)/2=( bn-1- an-1)/2 dac f(cn-1)<0; sau
bn- an= cn-1- an-1=( an-1+ bn-1)/2 - an-1=( bn-1- an-1)/2 dac f(cn-1)>0;
Deci pentru orice n1, bn- an=( bn-1- an-1)/2;
Utiliznd aceast egalitate pentru: n-1,n-2,,1 rezult bn- an=( (b-a)/2) >0 pentru c b>a ;
Deci bn>an nN ; Pe de alt parte cn este mijlocul intervalului [an, bn] i avem relaia : an< cn< bn
nN; Pentru a arta c irul { an} este monoton cresctor avem an= an-1 dac f(cn-1)>0;sau an= cn-1 dac
f(cn)<0; Pentru c an< cn< bn rezult c an-1 an { an} monoton cresctor analog irul {bn} este
monoton descresctor.
Proprietatea 2:
irurile { an} i { bn} sunt mrginite.
Demonstraie: Pornim de la relaia an < bn i majorm membrul drept (deoarece {bn} este ir monoton
descresctor) an bn bn-1 bn-2 b1 b0 nN;
Analog minorm n membrul stng pentru c { an } este ir monoton cresctor obinem
14
a0 a1 an bn nN;
Deci
a1 an bn bn-1 b1 b0 nN;
Rezult
a0 an< b0 { an} mrginit;,
a0< bn b0 { bn} mrginit;
Proprietatea 3:
irurile { an} i { bn} sunt convergente i au aceeai limit.
Demonstraie : Conform criteriului lui Weierstrass orice ir monoton i mrginit este convergent{
an} i { bn} sunt convergente .
Fie
an=A sau an A
bn= B sau bnB A,B a, b
a0
lim
lim
Atunci
lim
(an bn) =
lim
n
n
ba
=0
2n
A-B=0 A=B
lim
n
lim
n
lim
n
lim
cn=
lim
n
lim
n
Pentru a exemplifica mai bine modul n care se poate determina soluia prezentm mai jos un program
care l-am implementat n C++ i arat foarte clar pe pai cum se realizeaz aceast njumtire pentru
2
un n dat. Implementarea s-a fcut pentru ecuaia x ln(1 x) sin x 1 0 , n care I=[0,2] i n=10.
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
double a,b,c;
int i,n;
double f(double x)
{return x*x*log(1+x)-sin(x)-1;}
int main()
{
cout<<"dati intervalul I=[a,b]"<<'\n';
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"Numarul de iteratii:"<<'\n';
cin>>n;
for (i=1;i<=n;i++)
{ c=(a+b)/2;
if (f(c)<0) a=c;
else b=c;
cout<<"la iter."<<i<<"sol. se afla in
interv." << setprecision(6) << a << ","
<< setprecision(6) << b <<"\n";
}
return 0;
}
Dei nu am determinat soluia, putem spune c dac o pstrm numai cu primele dou zecimale soluia
este 1.48; prin continuarea procedeului de njumtire pentru un n mai mare, putem obine oricte
zecimale exacte ale unei valori necunoscute.
2
Mai jos sunt prezentate pentru ecuaia x ln(1 x) sin x 1 0 ], datele obinute prin executarea
programului pentru n=10:
la iter.1 sol. se afla in interv.1.0000,2.0000
la iter.2 sol. se afla in interv.1.0000,1.5000
la iter.3 sol. se afla in interv.1.2500,1.5000
la iter.4 sol. se afla in interv.1.3750,1.5000
la iter.5 sol. se afla in interv.1.4375,1.5000
Estimarea erorii:
n cele mai multe situaii nu vom putea determina valoarea exact a lui .
Dar vom putea aproxima cu oricte zecimale. Astfel vom calcula un numr de termeni ai irului {cn} i
ne vom fixa un numr astfel nct | cn-|<.
Estimarea apriori a erorii const n obinerea unei inegalitati de forma | cn -|<(n).
Dac inecuaia cu necunoscuta n (n)< poate fi rezolvat, fr calculul termenilor
irului { cn } atunci vom ti, care element al irului { cn } aproximeaz soluia cu precizia .
Pentru estimarea apriorii a erorii folosim relaia: bn an =(b-a)/2 i faptul c , cn [an, bn].
15
Soluia cu trei zecimale exacte i cu estimare apriorii a erorii pentru eps=0.001 este: 1.481
Estimarea aposteori a erorii
Const n obinerea unei inegaliti de forma | cn -|<const| cn - cn-1 |. Problema determinrii soluiei cu
o eroare dat este acum principal modificat n sensul c o dat cu calculul termenilor c n , vom testa
realizarea condiiei: const| cn - cn-1 |<
Pentru estimarea aposteori a erorii pornim de la : | an - cn|=| bn - cn |=| an - bn |/2
De unde rezult | an bn |=2| an cn|; | an bn |=2| bn cn |
Deoarece an = cn-1 sau bn = cn-1 nseamn c cel puin una din cele dou egaliti anterioare au membrul
drept egal cu 2| cn-1 - cn |, deci | an - bn |=2| cn-1 - cn |
Pentru c , cn [an, bn] rezult | cn -|<| an - bn |=2| cn - cn-1 |
Deci, dac vrem s obinem soluia aproximativ cu eroarea estimat aposteori pentru ecuatia f(x)=0
prin metoda njumtirii intervalului trebuie s calculm termenii irului {cn } pn cnd 2| cn - cn-1 |<.
n cadrul acestei metode este posibil s utilizm ambele estimri.
Vom prezenta mai jos modul n care se poate determina cu trei zecimale exacte soluia ecuaiei:
x 2 ln(1 x) sin x 1 0 cu estimare apostori a erorii.
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
double a,b,c,eps,c1;
int i,n;
double f(double x)
{return x*x*log(1+x)-sin(x)-1;}
int main()
{
cout<<"dati intervalul I=[a,b]"<<'\n';
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
if(f(a)<0&&f(b)>0)
{
cout<<"dati estimarea erorii:";
cin>>eps;
c=a;
do{
c1=c; c=(a+b)/2;
if (f(c)<0)a=c;
else b=c;}
while(abs(c-c1)>=eps/2);
cout<<"solutia cu trei zecimale
exacte si cu estim. aposteori a erorii
" << setprecision(6)<<c<<"\n";
}
else cout<<"nu este respectata
ipoteza";
return 0;
}
Soluia cu trei zecimale exacte i cu estimare aposteorii a erorii pentru eps=0.001 este: 1.481.
Bibliografie:
[1.] Analiz numeric. Proiect manual XII Informatic, G.D. Matescu, Ileana Matescu, Editura Petrion
[2.] Metode de calcul numeric, Dumitru Ebnc, Editura Sitech Craiova, 1994.
[3.] Mic enciclopedie matematic, Editura tehnic Bucuresti, 1975
16
Care sunt carenele sistemului educational i cum ai vedea voi un sistem/mediu educaional astfel
nct s ieim cu toii (i noi ... i voi!!) din apatia asta generalizat din mediocritatea care din
nefericire ne nconjoar i n care ne complacem? (un articol foarte interesant, scris de un fost
olimpic la informatic l putei citi aici http://www.invatamantul.ro/ )
Pot reelele de socializare s nlocuiasc comunicarea i socializarea?
M putei convinge, prin argumente , exemple de bun practic, s accesez/utilizez frecvent pagina
de facebook, n condiiile n care zilnic toat lumea posteaz orice, orict, fr discernmnt cnd
vd c toat lumea d click la orice material?! Sincer, de like, nici nu vreau s vorbesc, chiar v
rog s nu ncercai s m convingei dac vreau s felicit pe cineva, pot s-o fac personal, pot s
dau un telefon.pot s comunic fr click iar numrul de like-uri, nu m intereseaz.90% din
ele le consider false, ipocrite!!
Sunt i excepii, le-am enumerate chiar eu, mai sus (la utilizarea instrumentelor tehnologice)...
Sunt subiectiv, normal! Dar, e dreptul meu! Nu pot nelege, de ce 80% din cei care folosesc aceast
platform de socializare se autodiscrediteaz ? (prin postarea unor materiale, imagini
compromitoare, penibile, triste, sigur, n noul DOOM va fi adugat cuvntul selfie patetic, nu?)
Bibliografia
[1]_A.Adler,Cunoaterea omului, Editura IRI,1996
[2] Andrei Mjeri, eseu publicistic PRO/ FESORII, tot mai departe de elevi , 2009
http://www.infoarena.ro/problema/rucsac
Se d o mulime format din N obiecte, fiecare fiind caracterizat de o greutate i un profit. S se
gseasca o submulime de obiecte astfel nct suma profiturilor lor s fie maxim, iar suma greutilor
lor s nu depeasc o valoare G.
Date de intrare
Pe prima linie a fiierul rucsac.in se vor gasi valorile N si G, cu semnificaia din enunt. Pe urmatoarele N
linii se vor gsi perechile de valori Wi si Pi, reprezentnd greutatea, respectiv profitul obiectului i.
Date de ieire
n fiierul de ieire rucsac.out se va afisa o singura valoare Pmax, profitul maxim care poate fi obinut
respectnd condiia problemei.
Restricii
1 N 5000, 1 G 10000
0 Wi, Pi 10000
Exemplu
rucsac.in rucsac.out
6
3
3
1
1
2
1
10
7
4
2
9
4
5
29
Rezolvare:
Pentru a calcula dinamic (n timp/pas cu pas) valoarea ctigului maxim utiliznd o anumit greutate,
folosim o matrice cu n linii si gmax coloane (n- numarul de obiecte, gmax= greutatea maxim a
rucsacului)
Semnificaii:
i- numarul de linie= numrul obiectului analizat la un moment dat
j- coloana= greutatea care se poate obine folosind obiectul cu numrul i
castig[i][j] - valoarea ctigului dac se folosete obiectul i pentru greutatea j
Valoarea maxim a ctigului va fi ultimul element al matricei castig[n][gmax]
18
Pentru a arta i obiectele care au fost utilizate se foloseste matricea selectat[][]- numrul ultimului
obiect utilizat.
Sursa C++
# include <fstream>
using namespace std;
ifstream f("rucsac1.in");
ofstream g("rucsac1.out");
int n, gmax, castig[1000][10000], gr[100000], c[200], selectat[1000][10000];
int main()
{ int i,j,k,p;
f>>n>>gmax;
for(i=1;i<=n;++i)
f>>gr[i]>>c[i];
//prelucrare
for(i=1;i<=n;++i)
{ for(j=1;j<=gmax;++j)
{ if(gr[i]<=j)
{if(c[i]+castig[i-1][j-gr[i]]>castig[i-1][j])
{
castig[i][j]=c[i]+castig[i-1][j-gr[i]];
selectat[i][j]=i;
}
else
{ castig[i][j]=castig[i-1][j];
selectat[i][j]=selectat[i-1][j];
}}
else
{castig[i][j]=castig[i-1][j];
selectat[i][j]=selectat[i-1][j];
}}
//afiri intermediare pentru a verifica cum se modific
g<<"modificare matrice castig la pasul "<<i<<endl;
for(k=1;k<=n;++k)
{for(p=1;p<=gmax;++p)
g<<castig[k][p]<<" ";
g<<endl;}
g<<"modificare matrice selectat la pasul" <<i<<endl;
for(k=1;k<=n;++k)
{for(p=1;p<=gmax;++p)
g<<selectat[k][p]<<" "; g<<endl;}
}
i=n; j=gmax;
g<<"castig total="<<castig[i][j]<<endl;
// afisare obiecte selectate
while(selectat[i][j])
{ int x=selectat[i][j];
g<<selectat[i][j]<<" ";
while(x==selectat[i][j]){j=j-gr[x];--i;}
}}
Exemplu 1
0000000000
modificare matrice castig la pasul 1
0000000000
0077777777
modificare matrice castig la pasul 2
0000000000
0077777777
0000000000
0 0 7 7 7 11 11 11 11 11
0000000000
0000000000
0000000000
0000000000
0000000000
modificare matrice selectat la pasul1
modificare matrice selectat la pasul2
0011111111
0011111111
0000000000
0011122222
0000000000
0000000000
0000000000
19
0 0 7 7 7 11 11 11 11 11
2 2 7 9 9 11 13 13 13 13
9 11 11 16 18 18 20 22 22 22
9 11 13 16 18 20 22 22 24 26
0000000000
modificare matrice selectat la pasul5
0011111111
0011122222
3313323333
4444444444
4454455455
0000000000
modificare matrice castig la pasul 6
0077777777
0 0 7 7 7 11 11 11 11 11
2 2 7 9 9 11 13 13 13 13
9 11 11 16 18 18 20 22 22 22
9 11 13 16 18 20 22 22 24 26
9 14 16 18 21 23 25 27 27 29
modificare matrice selectat la pasul6
0011111111
0011122222
3313323333
4444444444
4454455455
4666666666
castig total=29
obiecte selectate
65421
0033333333
0000000000
modificare matrice castig la pasul 4
0022222222
0023335555
0 0 8 8 8 10 11 11 11 13
0 0 8 8 8 10 11 11 11 13
0000000000
modificare matrice selectat la pasul 4
0011111111
0012222222
0033333333
0033333333
0000000000
modificare matrice castig la pasul 5
0022222222
0023335555
0 0 8 8 8 10 11 11 11 13
0 0 8 8 8 10 11 11 11 13
0 0 8 8 8 10 11 15 15 15
modificare matrice selectat la pasul5
0011111111
0012222222
0033333333
0033333333
0033333555
castig total=15
53
20
n Hong Kong te simi ca pe o punte ntre dou lumi: zgrie-norii i luxul, evidente n central oraului, i
mreia statuilor, templelor budhiste i cldirile cu aspect oriental existente pe insul sau n zonele
apropiate.
Activitatea mea zilnic s-a desfurat n centrul oraului, unde eram i cazat. De aceea, n weekend-uri
ieeam n zone mai puin influenate de arhitectura occidental: zone montane cu spaii verzi, cldiri cu
arhitectur asiatic i temple.
ntr-unul dintre weekend-uri mi-am planificat o excursie pe insula Lantau pentru a vedea vestita statuie
Big Buddha. Dup un drum de aproape dou ore (o or cu metroul i una cu autocarul), am ajuns ntro zon magic, tronat de o statuie gigant: statuia, situat pe coama unui deal, troneaz i parc veghez
asupra ntregii regiuni. Magnific prin construcie i plasament, statuia Big Buddha ofer turistului ca
mine trirea unui sentiment unic de mulumire sufleteasc.
Satisfacia personal este dubl: lucrez n domeniul pe care-l visam i pot s vd
lumea, deci, visele de licean pot deveni realitate!
Am cunoscut i persoane din anul doi, care m-au sftuit s aplic pentru ct mai multe stagii de
practic n bnci de investiii, stagii ce se desfurau primvara. Fiecare stagiu avea o durat de
aproximativ una-dou sptmni. Competiia era imens, dar am reuit cu un CV bine pregtit i un
interviu telefonic s fiu acceptat la dou dintre aceste programe, n cadrului departamentului de
Tehnologie la dou corporaii renumite. Problema a fost c ambele se desfurau n acelai timp i am
avut de fcut o alegere foarte grea. Acest pre-internship este o oportunitate unic de a face primul pas
spre o carier de succes. n cazul unei bune relaii de comunicare i asimiliarea ct mai multor
cunotinte n domeniul respectiv al companiei, ii va fi oferit un assessment centre, unde va trebui s ai
un interviu face-to-face bazat pe competene personale i unul tehnic, cteva exerciii de grup n care va
trebui s demonstrezi c esti capabil de iei decizii rapide i s dai dovad c eti un bun membru ntr-o
echip). Dac eti acceptat la acest stagiu, atunci pentru vara din anul 2 si 3 vei fi acceptat la un program
de internship, care, n proportie de 80%, ii va asigura un loc stabil de munc, asta dac te-ai descurcat,
bineneles.
Cred c acum este timpul totui s v povestesc i despre cum poi fi acceptat n Marea Britanie.
Poi aplica la maximum cinci faculti prin intermediul site-ului UCAS. Trebuie s ai un Personal
Statement foarte bine structurat i organizat, n care trebuie s spui de ce vrei s studiezi cursul
respectiv i ce te calific pentru a fi ales. Ii trebuie de asemenea i o scrisoarea de recomandare de la
dirigintele tu sau de la un profesor, care s reflecte activitile tale extra-colare, ct i rezultatele din
timpul anilor. n cazul n care eti acceptat, i se vor pune cteva condiii pentru a intra la facultatea
respectiv. Prima este, desigur, s ai un test de limba engleza certificat (ex: IELTS, Cambridge Advanced
sau Proficiency, TOEFL). Dup aceea, n mod normal, ar trebui s ii cear Diploma de Bacalaureat.
Fiecare facultate are condiii diferite de admintere. De exemplu,
pentru Medicina sau Arhitectur, vor trebui prezentate dosare cu
anumite lucrri.
Cred c experiena pe care am avut-o n acest an de facultate
a fost unic. Mi-am fcut muli prieteni, am reuit s m implic
destul de mult i n cateva activiti extra-colare i, cel mai
important, am nvat s fiu resposabil, organizat i s iau deciziile
potrivite n diferite situaii. Sper c n viitor s lucrez unul-doi ani la
o companie, dup care a dori s imi deschid propriul business. V
urez succes la toi i s v gndii bine la ceea ce vei face n viitor!
Dac avei ntrebri, n iulie sunt acas :D !
Drago Mihai Popescu, absolvent C.N.T.V.
Profil Matematic Informatic, promoia 2012
Universitii din Bucureti, m-am nscris la master la ASE Bucureti la Facultatea de Cibernetica,
Statistica i Informatica Economic, specializarea Baze de Date, mergnd n paralel cu masterul i
facultatea din Trieste, terminndu-le n 2010.
ntre timp, pentru c singura mea sursa de venit era bursa de studii de la facultatea din Italia, am
nceput s dau meditaii de matematic la elevi de liceu din Italia, s lucrez ntr-un restaurant i n
acelai timp n colaborare cu un profesor de la Universitate din Trieste cu care am scris articole n
Statistic pe care le-am publicat mpreuna la reviste din America, n general.
i pentru c mi place extaordinar de mult s cltoresc, n anii de universitate am reuit s vd
aproape ntreaga Europ i s economisesc i bani din care i-am cumparat mamei mele un apartament
de care sunt foarte mndr.
Revenind la carier, imediat dup terminarea facultii i masterului n 2010 am nceput s
lucrez la o companie internaional ESTECO ca i software architect, programnd n JAVA, la un desktop
software folosit n proporie mai mare de 50% n industria automobilistic, iar dup mai mult de un an
am lucrat i la varianta web al aceluiai software. Dar ntre timp, pentru c mie mi place s-mi complic
singur viaa, am lucrat de acas la o mobile application pentru o companie din Italia.
Din ianuarie 2013 lucrez ca i software developer pentru Comisia Europeana, Joint
Research Center (JRC) n Ispra, Italia, la 2 proiecte (INSPIRE i Air Quality System) care au ca
rezultate 2 website-uri care sunt folosite de toate statele membre ale Uniunii Europene. Acestea
mi-au dat oportunitatea de a cunoate, colabora i lucra cu persoane din toate statele membre. Cum am
ajuns s lucrez pentru Comisia European? Nu a fost deloc complicat. Am dat cteva interviuri cu cei
de la Comisie i am fost acceptat. Am renuntat la contractul permanent pe care l aveam cu job-ul
precedent doar pentru c tiam c n JRC este un mediu multicultural, foarte competitiv i stimulativ.
ntotdeauna am fost ambiioas i am tiut ce mi doresc i cred c orice tnar
ambiios, prin munc i mult pasiune pentru ceea ce face, perseveren, dar i puin
noroc poate ajunge acolo unde nu i-a imaginat vreodat.
Munii Alpi
Egipt
Italia
25
Concursul
Elev
ONI 2014
POPESCU GEORGE, clasa a X-a A
Medalie de ARGINT, calificare BARAJ LOT
Timp maxim de execuie / test: 0.1s
Memorie totala disponibil / stiv: 16MB/8MB
spion1
Spionul 008 vrea s gseasc o locaie secret n jungl, avnd asupra lui un
dispozitiv de localizare. Iniial spionul se afl la intrarea n jungl pe nivelul 1 i
cu fiecare pas, el avanseaz de la nivelul i la nivelul i+1, ajungnd la locaia
secret, aflat pe ultimul nivel, n poziia u fa de marginea stng a nivelului
curent. Pentru a ajunge n locaia secret, el poate s se deplaseze cu o poziie spre
Sud-Est (codificat cu caracterul E) sau spre Sud-Vest (codificat cu caracterul V),
trecnd de pe nivelul i pe nivelul i+1 cu vitez constant. Numrul de poziii de pe
un nivel crete cu unu fa de nivelul anterior, conform imaginii alturate. Numim
traseu o succesiune format din caractereleE sau V, corespunztoare deplasrii
spionului de pe nivelul 1 la locaia secret. Pentru exemplul din figura alturat
succesiunea de caractere VEEVE reprezint un traseu ce corespunde locaiei
secrete din poziia 4 a nivelului 6.
Cerin
Cunoscnd succesiunea de caractere corespunztoare unui traseu, determinai:
a) poziia locaiei secrete de pe ultimul nivel;
b) numrul de trasee distincte pe care le poate urma spionul plecnd din poziia iniial pentru a ajunge n
locaia secret corespunztoare traseului dat. Dou trasee se consider distincte dac difer prin cel puin o
poziie.
Date de intrare
Fiierul de intrare spion1.in conine pe prima linie un numr natural p din {1,2}, iar pe a doua linie o
succesiune de caractere corespunztoare unui traseu.
Date de ieire
Dac valoarea lui p este 1, atunci se va rezolva numai punctul a) din cerin. n acest caz, fiierul de ieire
spion1.out va conine pe prima linie un numr natural ce reprezint poziia de pe nivelul final a locaiei
secrete.
Dac valoarea lui p este 2, atunci se va rezolva numai punctul b) din cerin. n acest caz, fiierul de ieire
spion1.out va conine pe prima linie un numr natural ce reprezint numrul de trasee distincte modulo
100003.
Restricii
2 lungimea irului pailor 100 000
Pentru alte 10% din teste valoarea lui p=2 i 3000 lungimea secvenei de caractere 5000.
Exemplu
spion1.in
spion1.out
Explicaii
1
VEEVE
26
2
VEV
2
EVEVVEVEEE
210
Descriere soluie
Pentru punctul a) este suficient s contorizm numarul de caractere "E" .
Notm acest numr cu y. Noi vom afia y+1 deoarece pornim de pe poziia 1.
Pentru punctul b) trebuie sa observam ca numarul de drumuri este exact C(n,y); pentru a obtine cele 100 de
puncte puteam s calculm acest numar:
- descompuneam fiecare numar de la 1 la n n factori primi i retineam un vector cu puterile fiecrui
factor prim.
- analog pentru toate numerele de la 1 la y i de la 1 la n-y, doar ca puterile acestora vor fi reinute n alt
vector.
Vom calcula C(n,y) dupa formula n!/y!*(n-y)! dupa ce avem fiecare factor prim i puterea la care se afl
acesta, putem sa calculam produsul ridicand la putere logaritmic fiecare factor prim.
De asemenea, pentru o descompunere mai rapida in factori primi putem precalcula factorii primi folosind
Ciurul lui Erathostenes.
Sursa C++
# include<fstream>
# include<cstring>
# define NMAX 100005
# define MOD 100003
using namespace std;
int nrp[10010];
int p;
char s[100009];
int factn[NMAX+9],factk[NMAX+9];
int y,i,n;
int k,viz[NMAX+10];
//Cirul lui Erathostenes
void ciur()
{
int i,j;
for (i=2;i<=NMAX;++i){
if (viz[i]==0){
nrp[++k]=i;
for (j=i+i;j<=NMAX;j+=i) viz[j]=1;
}
}
}
//ridicare la putere in timp logaritmic
int lgput(int a,int b)
{
long long s;
if (b==1) return a;
if (b==2) return a*a;
if (b%2==0) s=((lgput(a,b/2)%MOD)*(lgput(a,b/2)%MOD))%MOD;
else s=a*(lgput(a,b-1)%MOD)%MOD;
return s;
}
int main()
{
ifstream f("spion.in");
ofstream g("spion.out");
f>>p;f.get();
ciur();
f.getline(s,100005);
n=strlen(s); y=0;
for (i=0;i<n;++i){
27
if (s[i]=='E') ++y;
}
//tratam puncul a)
if (p==1) {g<<y+1<<'\n';return 0;}
else
{
//tratam punctul b
//descompunem numerele de la 1 la n in factori primi
for (i=2;i<=n;++i){
int x=i;
p=1;
while (x!=1 && viz[x]==1)
{
while (x%nrp[p]==0) x=x/nrp[p],++factn[nrp[p]];
++p;
}
if (viz[x]==0) ++factn[x];
}
//descompunem numerele de la 1 la y in factori primi
for (i=2;i<=y;++i){
int x=i;
p=1;
while (x!=1 && viz[x]==1)
{
while (x%nrp[p]==0) x=x/nrp[p],++factk[nrp[p]];
++p;
}
if (viz[x]==0) ++factk[x];
}
int r=n-y;
//descompunem numerele de la 1 la n-y in factori primi
for (i=2;i<=r;++i){
int x=i;
p=1;
while (x!=1 && viz[x]==1)
{
while (x%nrp[p]==0) x=x/nrp[p],++factk[nrp[p]];
++p;
}
if (viz[x]==0) ++factk[x];
}
//facem diferenta de factori
for (i=2;i<=n;++i){
factn[i]-=factk[i];
}
long long sum=1;
//ridicam la putere in timp logaritmic fiecare factor
for (i=2;i<=n;++i){
if (factn[i]!=0) sum=(sum*lgput(i,factn[i]))%MOD;
}
g<<sum<<'\n';
}
}
zimeria
28
Cerin
Cunoscnd ordinea semnelor i cuvintele de pe plac determinai:
a) Numrul de cuvinte distincte existente pe plac
b) irul de cuvinte ordonat lexicografic, conform criteriului formulat de Olimpia
Date de intrare
Fiierul de intrare zimeria.in conine pe prima linie un numrul natural p din {1,2}, reprezentnd varianta
cerinei de rezolvare. Pe a doua linie se afl un numr natural n reprezentnd numrul de cuvintede pe plac.
Pe a treia linie sunt scrise 12 caractere, litere mici ale alfabetului englez, care reprezint semnele codificate, n
ordinea lexicografic a semnelor. Pe fiecare dintre urmtoarele n linii se afl cte un cuvnt.
Date de ieire
Dac valoarea lui p este 1, atunci se va rezolva numai punctul a) din cerin. n acest caz, fiierul de ieire
zimeria.out va conine pe prima linie numrul de cuvinte distincte de pe plac.
Dac valoarea lui p este 2, atunci se va rezolva numai punctul b) din cerin. n acest caz, fiierul de ieire
zimeria.out va conine n linii, pe fiecare linie cte un cuvnt n ordine lexicografic, conform complexitii
stabilite de ctre Olimpia.
Restricii
n < 400000
30% din teste vor avea pe prima linie valoarea 1, iar restul de 70% din teste vor avea pe prima linie
valoarea 2.
Exemple:
zimeria.in
zimeria.out
Explicaii
1
5
qwertyuiopas
reeet
wyuty
reeet
oiopp
oiopp
Descriere soluie
Avem un alfabet format din exact 12 caractere si cate n cuvinte, fiecare avand 5 caractere. Observam foarte
usor ca fiecare caracter din acel alfabet poate fi inlocuit cu o cifra a uneia din bazele mai mari ca 11. Am ales
sa consideram fiecare litera din alfabetul nostru ca fiind reprezentantul unei cifre din baza 13.
Pentru exemplul 2:
6
qwertyuiopas
sapoi
sapou
wyuty
reeet
oiopp
oiopp
Vom inlocui fiecare alfabetul nostru qwertyuiopas, astfel 0123456789AB. Deci cuvantul "sapoi" se
va transforma in "BA987".
Aceste numere le vom transforma in baza 10 si apoi le vom sorta folosind un algoritm de sortare, urmand sa
retrecem vectorul cu numere sortate innapoi in baza 13, iar apoi in literele alfabetului nostru. Acestea au fost
pentru cazul al doilea.
Pentru primul caz se fac aceleasi conversii de baze, doar ca nu se sorteaza, numerele se pun intr-un vector de
aparitii iar apoi se parcurge vectorul pentru a verifica exact cate numere sunt. (Memoria ne permite acest lucru
deoarece cuvintele au maxim 5 caractere.)
Sursa C++
# include <fstream>
# include <algorithm>
using namespace std;
char alf[50],sir[50],s[50],ap[50];
29
bool viz[400005];
int v[400005],n,i,j,p;
int put[]={1,13,169,2197,28561};
//transformam numarul k din baza 13 in baza 10
void transf3(int k)
{
for (int t=0;t<5;++t){
if (ap[t]>='0' && ap[t]<='9'){
v[k]+=((ap[t]-'0')*put[4-t]);
}
else {
int x=ap[t]-'a'+10;v[k]+=(x*put[4-t]);
}
}
}
//transformam numarul k din baza 10 in baza 13
void transf10(int k)
{
int i=4;
while (v[k]>0){
int r=v[k]%13;
if (r<=9) ap[i]=(char)('0'+r);
else {
if (r==10) ap[i]='a';else ap[i]='b';
}
--i;
v[k]=v[k]/13;
}
if (i>=0) while (i>=0) ap[i]='0',--i;
}
int main()
{
fstream f("zimeria.in",ios::in);fstream g("zimeria.out",ios::out);
f>>p>>n;f.get();f.getline(sir,15);
//initializam alfabetul
alf[sir[0]-'a']='0'; alf[sir[1]-'a']='1'; alf[sir[2]-'a']='2';
alf[sir[3]-'a']='3'; alf[sir[4]-'a']='4'; alf[sir[5]-'a']='5';
alf[sir[6]-'a']='6'; alf[sir[7]-'a']='7'; alf[sir[8]-'a']='8';
alf[sir[9]-'a']='9'; alf[sir[10]-'a']='a'; alf[sir[11]-'a']='b';
for (i=1;i<=n;++i){
f.getline(s,10);
for (int j=0;j<5;++j){
ap[j]=alf[s[j]-'a'];
}
transf3(i);
//marcam numarul v[i] in vectorul de aparitii
if (viz[v[i]]==0) ++viz[v[i]];
}
if (p==1){
//tratam cazul intai al problemei
int sum=0;
for (i=0;i<=400000;++i) sum+=viz[i];
g<<sum<<'\n';
return 0;
}
else{
//tratam cel de-al doilea caz
sort(v+1,v+n+1);//sortam
for (i=1;i<=n;++i)
{
//facem conversia fiecarui nr din baza 10 la loc in cuvant pentru a afisare
transf10(i);
for (int j=0;j<5;++j)
if (ap[j]>='0' && ap[j]<='9') g<<sir[(ap[j]-'0')];
30
else {
int x=ap[j]-'a'+10; g<<sir[x];
}
g<<'\n';
}
return 0;
}
Concurs
Elev
ONI 2013
Mrgeloiu Andrei, Clasa a X- a A
MENIUNE M.E.C. / Medalie AUR
Timp maxim de execuie / test: 0.3s
Memorie totala disponibil / stiv: 16MB/8MB
aranjare
Toat lumea tie c Mirel are 2*N sticlue cu parfum aezate pe un raft cu 2*N poziii, numerotate de
la 1 la 2*N. El are N sticlue cu parfum cumprate din ar i alte N sticlue cu parfum cumprate din Frana.
Sticluele cumprate din ar sunt etichetate cu r1, r2, , rN, iar sticluele cumprate din Frana sunt etichetate
cu f1, f2, , fN. Fiecare sticlu are asociat valoarea cu care a fost cumprat.
Iniial, Mirel are aezate pe primele N poziii sticluele cumprate din ar sortate cresctor dup valoare, iar
pe urmtoarele N poziii sticluele cumprate din Frana sortate tot cresctor dup valoare. Astfel,
cele 2*N sticlue cu parfum sunt aezate n felul urmtor: r1, r2, , rN, f1, f2, , fN. Mai exact, sticlua ri se afl
pe poziia i, iar sticlua fi se afl pe poziia N+i, pentru i din intervalul [1, N].
Prietenul su cel mai bun, Marian, s-a gndit s-i fac o surpriz i s-i schimbe aranjarea sticluelor cu
parfum n urmtoarea ordine: r1, f1, r2, f2, , rN, fN. Cum Marian are dou mini, el poate face numai
urmtorul tip de operaie: ia dou sticlue cu parfum de pe raft (de pe dou poziii diferite) i le interschimb.
Cerin
Dndu-se numrul N i 2*N valori reprezentnd valoarea fiecrei sticlue cu parfum, ajutai-l pe Marian s
fac operaiile necesare pentru a schimba ordinea sticluelor cu parfum n ordinea precizat n enun.
Date de intrare
Fiierul de intrare aranjare2.in conine pe prima linie numrul N, iar pe urmtoarea linie 2*N numere naturale,
separate prin cte un spaiu. Primele N numere reprezint valorile sticluelor cumprate din ar, iar
urmtoarele N numere reprezint valorile sticluelor cumprate din Frana. Att primele N, ct i
ultimele N numere sunt sortate cresctor n funcie de valoare.
Date de ieire
Fiierul de ieire aranjare2.out va conine mai multe linii. Pe fiecare linie se vor afla dou numere
diferite x i y din intervalul [1, 2*N], semnificnd faptul c Marian trebuie s interschimbe sticlua de pe
poziia x cu sticlua de pe poziia y.
Restricii
2 N 31 000
Dac exist mai multe soluii, se poate afia oricare dintre ele. Soluia nu trebuie s fac neaprat
numrul minim de operaii.
Exemple
aranjare.in
aranjare.out Explicaii
3
1 3 5 2 3
5
2 4
3 5
3 4
n explicaia de mai jos, fiecare sticlu are numele etichetei urmat de valoarea ei
n parantez.
irul iniial este: r1(1) r2(3) r3(5) f1(2) f2(3) f3(5)
Dup prima mutare devine: r1(1) f1(2) r3(5) r2(3) f2(3) f3(5)
Dup a doua mutare devine: r1(1) f1(2) f2(3) r2(3) r3(5) f3(5)
Dup ultima mutare devine: r1(1) f1(2) r2(3) f2(3) r3(5) f3(5)
Descrierea soluiei
Se observ c valorile sticluelor din fiierul de intrare nu influeneaz cu nimic rezolvarea problemei, deci
31
Sursa C++
# include <fstream>
using namespace std;
ifstream f("aranjare.in");
ofstream g("aranjare.out");
int n, var[200005], poz[200005], i;
int main()
{
f>>n;
for(i=1; i<=2*n; ++i)
poz[i]=i, var[i]=i;
for(i=1; i<n; ++i){
if (var[2*i]!=n+i){
var[poz[n+i]]=var[2*i];
poz[var[2*i]]=poz[n+i];
g<<2*i<<" "<<poz[n+i]<<"\n";
}
if (var[2*i+1]!=i+1){
var[poz[i+1]]=var[2*i+1];
poz[var[2*i+1]]=poz[i+1];
g<<2*i+1<<" "<<poz[i+1]<<"\n";
}
}
return 0;
}
gradina
Pcal a reuit s duc la bun sfrit nelegerea cu boierul cruia-i fusese slug i, conform nvoielii, boierul
trebuie s-l rsplteasc dndu-i o parte din livada sa cu pomi fructiferi. Boierul este un om foarte ordonat, aa
c livada sa este un ptrat cu latura de N metri unde, pe vremuri, fuseser plantate N rnduri cu cte N pomi
fiecare. Orice pom fructifer putea fi identificat cunoscnd numrul rndului pe care se afl i poziia sa n
cadrul rndului respectiv. Cu timpul, unii pomi s-au uscat i acum mai sunt doar P pomi. Pcal trebuie s-i
delimiteze n livad o grdin ptrat cu latura de K metri.
Cerin
Cunoscnd dimensiunile livezii i grdinii, numrul pomilor din livad i poziia fiecruia, determinai
numrul maxim de pomi dintr-o grdin ptrat de latur K i numrul modurilor n care poate fi amplasat
grdina cu numrul maxim de pomi.
Date de intrare
Fiierul gradina1.in conine pe prima linie numerele naturale N P K, separate prin cte un spaiu, cu
semnificaia din enun. Pe urmtoarele P linii se afl cte 2 numere naturale Lin i Col, separate printr-un
spaiu, reprezentnd numrul rndului, respectiv poziia n rnd a fiecrui pom din livad.
Date de ieire
Fiierul gradina1.out va conine pe prima linie numrul maxim de pomi fructiferi dintr-o grdin ptrat cu
latura de K metri. Pe a doua linie va fi scris numrul de posibiliti de a amplasa grdina astfel nct s conin
numrul maxim de pomi determinat.
Restricii
2 N 1000
1 P N2
1KN
32
Exemple
gradina1.in gradina1.out Explicaii
12 10 5
4 3
5 5
6 8
7 3
7 7
8 8
9 3
9 6
10 10
11 5
5
5
Grdina
lui
Pcal
poate
avea
maximum
5
pomi
fructiferi.
Ea poate fi amplasat n 5 moduri, avnd colul stngasus de coordonate:
(5, 3), (5, 4), (5, 5), (6, 6), (7, 3)
.
Sursa C++
# include <cstdio>
using namespace std;
int i,j,n,p,k,maxx,nr,x,y,q,var;
int a[1005][1005];
int main ()
{
freopen ("gradina.in", "r", stdin);
freopen ("gradina.out", "w", stdout);
scanf ("%d%d%d", &n, &p, &k);
for (i=1; i<=p; ++i){
scanf ("%d%d", &x, &y);
a[x][y]=1;
}
for (i=1; i<=n; ++i)
for (j=1; j<=n; ++j)
a[i][j]=a[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1];
for (i=k; i<=n; ++i)
for (j=k; j<=n; ++j){
var=a[i][j]-a[i-k][j]-a[i][j-k]+a[i-k][j-k];
if (var>maxx) maxx=var, nr=1;
else if (var==maxx) ++nr;
}
printf ("%d\n%d\n", maxx, nr);
return 0;
}
Concursul
Elev
lambda
33
Cerin
Fiind date dou liste L1 i L2, s se calculeze diferena L1 - L2.
Date de intrare
Pe prima linie a fiierului de intrare lambda.in se afl lungimea -listei L1. Pe cea de-a doua linie se afl
elementele lui L1, separate prin spaii. Pe cea de-a treia linie se afl lungimea lui L2, iar pe cea de-a patra
linie se afl elementele liniei L2, separate prin spaii.
Date de ieire
Pe prima linie a fiierului de ieire lambda.out se afl dimensiunea -listei L1 - L2, iar pe cea de-a doua linie
elementele ei, separate prin spaii.
Restricii i precizri
Elementele listelor sunt numere naturale mai mici dect 1000. Listele au maxim 100000 de elemente.
Exemplu
lambda.in
lambda.out
7
4 5 6 7 6 5
4
3
0 1 2
2
1 2
Descriere soluie
n primul rnd s observm c soluia este de fapt numrul de poziii (i indexul lor) pentru care
diferenele dintre urmtoarele L2 elemente sunt egale cu diferenele dintre cele L2 elemente citite la
sfritul fiierului. Pentru a obine 100 de puncte este necesar un algoritm cu o complexitate liniar,
cum este KMP-ul (O(n+m)), deoarece soluia brut (naiv) nu s-ar ncadra n timp. (O(n*m)
Sursa C++
# include <iostream>
# include <cstdio>
# define maxn 100010
using namespace std;
int a[maxn],b[maxn],pi[maxn],pos[maxn],i,q,n,m,ct,ante,x;
void KMP()
{
int i,q=0;
for(i=2, pi[1]=0; i<=m; ++i){
while(q && a[q+1]!=a[i])
q=pi[q];
if(a[q+1]==a[i]) ++q;
pi[i]=q;
}
}
int main()
{
freopen("lambda.in","r",stdin);
freopen("lambda.out","w",stdout);
scanf("%d%d",&n,&ante);
for(i=1; i<n; ++i){
scanf("%d",&x);
b[i]=x-ante; ante=x;
}
scanf("%d%d",&m,&ante);
for(i=1; i<m; ++i){
scanf("%d",&x);
a[i]=x-ante; ante=x;
}
n--,m--;
KMP(); //FORMAREA PREFIXELOR PENTRU ALGORITMUL KMP
for(i=1; i<=n; ++i){
while(q && a[q+1]!=b[i])
q=pi[q];
34
if(a[q+1]==b[i]) ++q;
if(q==m){
q=pi[m];
pos[++ct] = i-m;
}
}
printf("%d\n", ct);
for(i=1; i<=ct; ++i)
printf("%d ", pos[i]+1);
printf("\n");
return 0;
}
Concursul
Elev
OJI 2012
Galbenu Dorin, Clasa a XII- a D
Premiul II
culori
Cerin
Ajutai-o pe Miruna s gseasc rspunsul la ntrebarea sa.
Date de intrare
Fiierul culori.in conine pe prima sa linie un singur numr natural N (1 N 5000).
Date de ieire
Fiierul de ieire culori.out va conine pe prima sa linie un singur numr ntreg reprezentnd numrul
de moduri diferite n care Miruna ar fi putut s vopseasc gardul bunicii.
Restricii i precizri:
1 N 5000;
Pentru 25% dintre teste N45.
Exemplu
culori.in
4
culori.out
24
Explicaii
Gardul poate fi vopsit astfel:
(alb,albastru,alb,albastru); (alb,albastru,rosu,albastru);
(alb,albastru,rosu,verde); (albastru,alb,albastru,alb);
(albastru,alb,albastru,rosu); (albastru,rosu,albastru,alb);
(albastru,rosu,albastru,rosu); (albastru,rosu,verde,rosu);
(albastru,rosu,verde,galben); rosu,albastru,alb,albastru);
(rosu,albastru,rosu,albastru); (rosu,albastru,rosu,verde);
(rosu,verde,rosu,albastru); (rosu,verde,rosu,verde);
(rosu,verde,galben,verde); (verde,rosu,albastru,alb);
(verde,rosu,albastru,rosu); (verde,rosu,verde,rosu);
(verde,rosu,verde,galben); (verde,galben,verde,rosu);
(verde,galben,verde,galben); (galben,verde,rosu,albastru);
(galben,verde,rosu,verde); (galben,verde,galben,verde).
35
Sursa C++
}
void creeaza(nrMare a,int x)
{ a[0]=0;
while(x)
{ a[++a[0]]=x%10;
x/=10;
}
}
void show(nrMare a)
{
for(int i=a[0];i>=1;i--)
g<<a[i];
g<<"\n";
}
void solve()
{
if(n%2==0)creeaza(a,s[2]);
else creeaza(a,s[3]);
for(int i=1;i<=n/2-1;i++)
inmulteste(a,3);
}
int main()
{
s[1]=5; s[2]=8; s[3]=14;
read(); solve(); show(a);
return 0;}
#include<iostream>
#include<fstream>
#define lmax 200
#define nmax 5005
using namespace std;
typedef int nrMare[lmax];
ifstream f("culori1.in");
ofstream g("culori1.out");
int s[10],n;
nrMare a;
void read()
{ f>>n;
}
void inmulteste(nrMare a, int x)
{
int t=0;
for(int i=1;i<=a[0];i++){
a[i]=a[i]*x+t;
t=a[i]/10; a[i]%=10;
}
while(t)
{ a[++a[0]]=t%10;
t/=10;
}
Descriere soluie
Putem nota:
Nr[ i, j ] = numrul de variante de a vopsii primele i scnduri, dac scndura i este vopsit cu culoarea j ( j=1,
2, 3, 4, 5)
S[ i ] = numrul de variante de a vopsi primele i scnduri din gard.
Se observ c apare urmtoarea relaie de recuren:
S[ i ] = nr[ i, 1] + nr[ i, 2] + nr[ i, 3] + nr[ i, 5]
nr[i,1]=nr[i-1,2]
nr[i,2]=nr[i-1,1]+nr[i-1,3]
nr[i,3]=nr[i-1,2]+nr[i-1,4]
nr[i,4]=nr[i-1,3]+nr[i-1,5]
nr[i,5]=nr[i-1,4]
Deoarece nr[1, j]=1, se poate vedea uor c:
nr[i, 1]= nr[i, 5], nr[i, 2]= nr[i, 4], nr[i, 3]= 2 * nr[i, 2]
Aadar:
nr[i,2]=nr[i-1,1]+nr[i-1,3]=nr[i-2,2]+2*nr[i-2,2]=3*nr[i-2,2] pentru i>2
nr[i,1]=nr[i-1,2]=3*nr[i-3,2]=3*nr[i-2,1] pentru i>4
nr[i,3]=2*nr[i-1,2]=6*nr[i-3,2]=3*nr[i-2,3] pentru i>4
S[i]= 2*nr[i,1]+2*nr[i,2]+nr[i,3] = 6*nr[i-2,1]+6*nr[i,2,2]+3*nr[i-2,3] = 3*S[i-2]
n concluzie se obine c:
S[1]=5, S[2]=8, S[3]=14
S[2k] = 3^(k-1) * S[2], pt k>1
36
Clasa
IX
X
V
XII
Premiul
Medalia de argint
Medalia de argint
Medalia de bronz
Medalia de bronz
Concursuri Naionale
Nr. crt.
1.
2.
3.
4.
Clasa
XI
XI
X
X
Concurs
C.N. de Soft Lugoj
C.N. de Soft Lugoj
C.N. de Soft Lugoj
PACO-Bucureti
Premiul
I
II
III
Meniune
Concursuri Internaionale
Nr. crt.
1.
Clasa
XI
Concurs
Concursul
Internaional CANGUR
Premiul
II
Clasa
X
Premiul
III, individual
XI
I, echipaj
IX-X
Meniune, echipaj
X-XI
Meniune, echipaj
37
Clasa
V
V
IX
IX
X
X
X
X
X
X
XI
XI
XI
XI
XII
XII
Premiul
I
II
I
Meniune
I
II
III
III
Meniune
Meniune
II
III
Meniune
Meniune
I
III
Clasa
IX
IX
IX
XII
XI
XI
Premiul
II
Meniune
Meniune
I
II
III
Clasa
XII
Premiul
Medalie de bronz
devenit mai mult dect o materie. A devenit o parte din mine care cu timpul s-a tot mrit i m-a fcut
din ce n ce mai fericit. Informatica e o cale a vieii, e o alegere. Am ales i prima durere am simit-o
devreme, chiar n clasa a noua. Atunci cnd eram mai sigur pe mine, lucrurile au luat o ntorstur
nefavorabil i am rmas acas, n timp ce prietenii mei din celelalte coluri ale rii i mrturiseau la
Olimpiada Naional ultimele lor aventuri informatice. Dac pn atunci aveam nevoie de motivaie
suplimentar, ei bine, lucrurile s-au schimbat. Am lucrat, m-am distrat (tiu c nu pare credibil, dar te
simi genial atunci cnd gseti rezolvarea optim a unei probleme dificile) i am lsat timpul s
vindece rnile din primul an de liceu. Drept rsplat, anul urmtor, n clasa a X-a, am participat la
Olimpiada Nationala de Informatic din Iai. Aveam nevoie de un motiv bun pentru a merge atta drum,
nu? i nu am regretat. Imaginai-v un atlet. Nenclzit corespunztor nu va da niciodat randamentul
maxim, dar dup prima tur i dorete din ce n ce mai mult s alerge. Aa c i eu am alergat din ce n
ce mai tare, iar n clasa a XI-a nu m-am lsat ateptat la Timioara, la o nou ediie a Olimpiadei. Cine se
gndea vreodat c informatica ar putea avea vreo legtur cu sportul? N-ar trebui s dezvlui secretele
mele, ns pentru c ai fost rbdtori v pot opti unul. Nu exist zi n care s nu eliberez stresul prin
sport! Fiecare trebuie s aib o modalitate de a nltura oboseala psihic. n mod contrar, cea mai bun
prieten a mea i a multor altora, informatica, poate fi necrutoare. Totui, n ncheiere, doresc tuturor
s se bucure aa cum eu m-am bucurat i m bucur de informatic. Dai-i o singur ans i dac nu v
este pe plac, venii s m cutai pe mine.
PS: Mereu am un algoritm bine stabilit pentru a scpa de cei care vor s -mi
cear socoteal. Slav informaticii !
Radu Dumitru Stochioiu, clasa a XII-a B
Filmul a fost nscris n concurs n ultima zi. Peste o sptmn fiind anunate c filmuleul s-a
calificat la etapa naional a concursului i c trebuie s mergem la Bucureti la Universitatea de SudEst Lumina, cea care organiza consursul s ne prezentam filmuleul n faa juriului n data de 5-6 aprilie.
Pentru faza national trebuiau ndeplinite anumite cerine, cum ar fi realizarea unui poster format A1
care s prezinte idea proiectului i pentru care urma s fim punctai.
La Universitate am gsit standuri pentru poster exact pe msura care ne-a fost indicat. Apoi am
ateptat ca filmuleul s fie proiectat i s rspundem la ntrebrile juriului. Au fost n total un numr de
33 de echipe din toat ara dintre care trei au reprezentat Colegiul Naional Tudor Vladimirescu:
Starry eyed format din Anca Dobrescu i Patricia Tacau care au obinut locul trei, The Believers
format din Darius Dubreu si Ileana Popescu care au obinut locul doi i echipa The Resistance
reprezentat de Alexandra Vlceanu i Diana Stnciulescu care au obinut de asemenea locul doi.
Realizarea unui scurt metraj poate fi facut de oricine i este o activitate creativ, util i distractiv n
acelai timp. Sper c v-am convins s ncercai s facei un scurt metraj i de ce nu s v nscriei, la
anul, la concursul Infomatrix. BAFT!
Ce este Cinema 4D ?
Cum sa explic?... Ai vzut vreodata reclame sau filme care folosesc modele 3D? Ei bine acele
modele au fost realizate folosind programe de acest gen. Deci, Cinema 4D reprezint un program de
modelare tridimensionala. Un domeniu foarte interesant pentru cei ce doresc sa experimenteze cu
modele 3D.
- De ce C- 4D?
Poate ca ai auzit de alte programe care folosesc acelai concept (Maya,3D-Max etc.) dar eu
recomand folosirea Cinema-ului deoarece aduce o interfaa mai prietenoasa cu utilizatorii, nu eti
bulversat de multitudinea de butoane si funcii pe care alte programe le etaleazin meniu, ca n cele
din urma s ajungi doar cu o durere de cap.
Interfaa este minimalist prezentandu-i doar strictul necesar. Daca eti ncepator Cinema 4D
asigura un mediu mai simplu de lucru fara a afecta calitatea produsului final.
In 2013 Cinema 4D a ajuns la versiunea R14 care introduce posibilitatea de a folosi sculpting
o mbuntire semnificativ deoarece nu mai ai nevoie de programe separate pentru sculptura cum ar
fi Z-Brush, economisind bani i timp. (La ora actual R15 a ieit dar sunt prea lene s scriu i despre el)
Cinema 4D este disponibil n 4 variante:
Cinema 4D Prime este varianta cea mai ieftina care se bazeaza doar pe
modelare 3D acesta poate fi achiziionat direct de pe site-ul celor de la Maxon
la doar 995$ sau gratis n versiunea Demo pentru 30 de zile.
Cinema 4D Broadcast este o varianta mai avansata aceasta permiand crearea
obiectelor dinamice i dispune de setari pentru randare mai avansate. Cnd
vine vorba despre pre acesta crete considerabil, aceast versiune fiind
acesibil pentru 1.695$, deasemenea este gratis pentru Demo.
41
Dac preurile te-au descurajat afl c Cinema 4D a pregtit o versiune gratis Cinema 4D Student
aceasta poate fi descrcat i folosit pentru 18 luni.
n cea ce privete acomodarea cu programul, cel mai simplu mod n care poti nvaa secretele Cinemaului este s vizitezi GrayScaleGorilla, un site foarte util. Avand numeroase videoclipuri de gen tutorial
dar i multe plugin-uri i tool-uri care te ajut s-i aduci la via ideile. Multitudinea de posibiliti pe
care le poi experimenta e limitat doar de imaginaia ta.
Timpul pe care l investeti ntr-un proiect depinde de complexitatea proiectului, placa video de
care dispui i setarile pentru randare, acestea putnd s n creasc pauza de ieit n ora de la cteva
secunde la cteva ore bune sau chiar zile n cazul n care foloseti efecte speciale cum ar fi Global
Ilumination, Ambient Oclusion i setezi Anti-Aliasing la ceva decent cum ar fi 4X. Desigur vei avea un
produs finit incredibil.
n cea ce priveste cerinele de sistem Cinema 4D nu este mofturos, acesta poate funciona i pe
un aparat ce dispune de Windows XP procesor Intel Pentium 4 i o plac video cu OpenGL 2.1 acestea
fiind cerinele minime.
Nu ai nevoie de un monstru de calculator. Eu rulez Cinema 4D Studio R14 pe un Acer Aspire
5742G cu 4G RAM, procesor Intel Core i5 2.8 GHz i placa video ATI Mobility Radeon HD 5470 de 512
Mb 64 bitzi i vreau s spun c merge impecabil, reuind s creez cteva clipuri video i proiecte:
Robot
42
books.out
4 2
Informatica-Ionescu-Corint-2003-200
TIC-Popescu-ALL-2000-200
Informatica-Luca-ALL-2006-250
TIC-Mihai-ALL-2013-200
ALL
Corint
2
Descrierea soluiei
Soluia 1 (30 puncte):
Citim listele bibliotecarului i sortm crile folosind o funcie de comparare. Aceasta determin dintre
2 cri care are prioritate, prin parcurgerea listei cu edituri, compararea titlului i autorului cu o funtie
predefinit, ultimul criteriu fiind anul apariiei. Folosim o metod de sortare clasic n care
determinm poziia final a unui element, ce ne permite s construim simultan i matricea n care
memorm numrul de pagini. Pentru determinarea numrului maxim de cri din aceeai zona folosim
un algoritm fill.
43
# include <fstream>
# include <cstring>
# include <cstdlib>
# include <algorithm>
using namespace std;
ifstream f("books.in");
ofstream g("books.out");
struct book{
char tit[21],aut[21],edit[21];
short an,nr;} a[30001];
short n,m,i,j,k,x,y,z,maxi,i;
short b[3001][101];
short dx[]={-1,-1,0,1,1,1,0,-1},
dy[]={0,1,1,1,0,-1,-1,-1};
char ed[301][21],s[72],*p;
void read()
{
f>>n>>m;f.get();
for(i=1;i<=n;i++){
f.getline(s,72);
p=strtok(s,"-");
strcpy(a[i].tit,p);
p=strtok(NULL,"-");
strcpy(a[i].aut,p);
p=strtok(NULL,"-");
strcpy(a[i].edit,p);
p=strtok(NULL,"-");
a[i].an=atoi(p);
p=strtok(NULL,"-");
a[i].nr=atoi(p);
}
for(i=1;i<=m;i++)
f.getline(ed[i],21);
f>>k;
}
short search(char a[],char b[])
{
short i; char x,y;
for(i=1;i<=m;i++){
x=strcmp(ed[i],a);
y=strcmp(ed[i],b);
if(!x && !y)return 0;
else if(!x) return 1;
else if(!y) return -1;
}
}
44
Algoritmii imaginaiei
sau
Matematica ndrgostitului
uite n plan un logaritm nefericit,
din vechile necazuri ce s-au tot nmulit.
l vezi?
vreau si schimbm starea de spirit.
hai s-adunm doi logaritmi mai fericii
i s speram.
c, dac a vrea s-i fac un compliment,
i-as zice scurt i la obiect:
eti exponenial!
constant nu i clar nu liniar.
eti genial. te vd urcnd mereu,
tu nu cobori nici cnd toi dau de greu.
nva-m! arat-mi asimptotele urcrii tale
i nu vei mai fi singur, c vin i eu agale
pe urm de matrice.
oricine orice-ar zice,
orice-a determina,
cu Sarrus a pleda.
iar eu, m-a ridica doar la puterea ta
de inelegere.
nu-i o alegere, ci o prelegere.
cci eu sunt baza, iar tu eti exponentul,
renmulindu-m pe mine, mi fac
antrenamentul!
m strduiesc, m-arunc n gol,
c fac antrenament de zburtor
cu DELTAplanul printre ecuaii.
cu cifrele m am ca fraii
sari, c te voi prinde-ntr-un modul
imens, unul destul
s ajungi jos, dar nu mai treci de nul,
eti in modul!
Informatic cu rim!
Tudor Vladimirescu, acesta este liceul
Cu standarde la nivele nalte ca zmeul
Buni programatori ai rii au plecat de aici
Cci profesorii educ elevii din clasele mici
Vrei reeta succesului, i servim un algoritm,
Ajungi s-l nelegi n funcie de al tu ritm.
Dac doreti s invei nu trebuie s te simi exclus,
Ai timp oricnd s nvei limbajul C++.
i poi exprima ideile ntr-un mod original, fr probleme,
Alegnd un program dintre CSS sau HTML
MATE-INFO NU-I DOAR UN IR DE CARACTERE,
ESTE UN PROFIL COMPLEX DIN TOATE PUNCTELE DE VEDERE.
45
https://sites.google.com/site/cntvtgjiu/
Autorii articolelelor sunt profesori, actuali i foti elevi ai Colegiului Naional Tudor Vladimirescu.
La tiprirea revistei au contribuit financiar prof. Elena Goga, prof. Gabriela Nodea,prof. Oana
Dabelea, prof. Eugen Nodea.
46