infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Andrei Grigorean din Noiembrie 25, 2007, 14:58:49



Titlul: 605 Economie
Scris de: Andrei Grigorean din Noiembrie 25, 2007, 14:58:49
Aici puteţi discuta despre problema Economie (http://infoarena.ro/problema/economie).


Titlul: Răspuns: 605 Economie
Scris de: Ionescu Robert Marius din Noiembrie 26, 2007, 21:37:22
imi poate spune cineva ce greses :(
citesc element cu element si fac a[element]=1 parcurg sirul si cand dau de un 1 fac toti multipli lui 0 si dupaia numar cati de 1 am si afisez indicile care au a=1
ce e gresit aicea?


Titlul: Răspuns: 605 Economie
Scris de: Florian Marcu din Noiembrie 26, 2007, 21:39:41
Poti fi putin mai explicit? Nu prea am inteles ce ai vrut sa zici...explica si noua sa stim ce vectori folosesti si in ce scop...


Titlul: Răspuns: 605 Economie
Scris de: Ionescu Robert Marius din Noiembrie 26, 2007, 21:42:57
am un vector a[50000] unde a=1 daca exista elemntul respectiv si 0 daca nu exista acel element in sir
si dupia parcurc tot sirul si vad daca a=1 atucni toti multipli lui <=50000 ii fac 0 si toto asa
la final numar cati de 1 sunt in sirul a si afisez toate elemntle i cxare au a=1


Titlul: Răspuns: 605 Economie
Scris de: Florian Marcu din Noiembrie 26, 2007, 21:51:12
PAi cred ca tu faci un fel de eratostene. Ia vezi, nu cumva afisezi doar numerele prime? Dca am inteles bine, hai sa`ti explic pe un exemplu:

sa zicem ca ai n=5 si numerele 2 3 5 6 8. [presupunem ca sunt deja ordonate].

*tu ai a-ul asa: 1 1 1 1 1 1 1 1... [de 50000 ori ]
*parcurgi a-ul, si intalnesti a[2]=1. Consideri 2 solutie si Modifici toti multiplii lui 2. a: 1 1 0 1 0 1 0 1 0 1 0 1 [pana la Max]
*apoi gasesti a[3]=1. Consideri 3 solutie si-i  Marchezi multiplii cu 0.
*apoi gasesti a[5]=1. Marchezi multiplii cu 0, si il consideri solutie. Ceea ce nu e corect, intrucat 5 poate fi obtinut cu suma dintre 2 si 3 [pe care deja ii aveai in vectorul solutie].

ps: eu asa cred k faci. sper ca am inteles klumea.

Hint: Trebuie sa marchezi toate sumele care se pot obtine din elemtele solutie alese la un moment dat. In cazul de mai sus, atunci knd ai deja 2 si 3, trebuie sa faci sa marchezi si pozitiile 2+3, 2*(2+3), 3*(2+3), etc. Spor!  :)


Titlul: Răspuns: 605 Economie
Scris de: Ionescu Robert Marius din Noiembrie 26, 2007, 21:54:41
 :fool: intelesesem un pik gresit cerinta  10x  :D


Titlul: Răspuns: 605 Economie
Scris de: Simina Pitur din Ianuarie 03, 2008, 15:26:00
sa zicem ca avem numerele 3 5 6 7 11 32
6=2*3
11=3*2+5
32=3*7+2*5
deci s:(3,5,7)

daca incerc un fel de ciur al lui eratostene mor pana elimin toate combinatiile (in sume) de elem. ale solutiei!
(sau nu?)
daca folosesc decat vectorul solutie si VERIFIC inainte de a introduce in el un numar, tot cam acolo ajung.
(sau nu?)
Sa fie atat de muncitoreasca?! I'd say not. I think I'm missing something.

I'm a newbie here and I would shine the shoes of anyone who's willing to give me some advice!
thank you.  :'(


Titlul: Răspuns: 605 Economie
Scris de: Gabriel Bitis din Ianuarie 03, 2008, 16:31:07
eu am sortat valorile, si am verificat ce sume se pot obtine pornind de la cele mai mici valori.. ceva asemanator problemei rucsacului.


Titlul: Răspuns: 605 Economie
Scris de: Andrei Grigorean din Ianuarie 03, 2008, 16:42:49
Vezi articolul cu solutii (http://infoarena.ro/preoni-2008/runda-1/solutii#economie)


Titlul: Răspuns: 605 Economie
Scris de: Simina Pitur din Ianuarie 04, 2008, 02:49:12
AHA! thank you taking the time to read my question and of course, for the response... and by the way, buna treaba ai facut la Operatii, gabi!  :thumbup:

si stiu ca-s offtopic si ca poate e o intrebare stupida, dar n-am pe cine altcineva sa intreb. In Pascal, e wise sa lucrez in continuare cu fisiere text sau mai bine ma reprofilez pe fisiere cu tip? Intuiesc eu ca motivul pentru care nu iau majoritatea testelor cu numere mari e din cauza asta. Se poate sa fie si altfel.

scuze pentru orice intrebare stupida!  :?

cine dumnezeu o mai lucra in Pascal...  :|

[editat de moderator: Nu posta consecutiv pe acceasi tema!]


Titlul: Răspuns: 605 Economie
Scris de: Paul-Dan Baltescu din Ianuarie 04, 2008, 09:01:37
Nu se folosesc fisiere cu tip la olimpiada/concursuri. Eu nu am avut niciodata nevoie de ele.


Titlul: Răspuns: 605 Economie
Scris de: Savin Tiberiu din Ianuarie 04, 2008, 11:00:35
[offtopic]
aparent nu mai e la moda limba romana.


Titlul: Răspuns: 605 Economie
Scris de: Andrei Grigorean din Ianuarie 04, 2008, 11:00:59
AHA! thank you taking the time to read my question and of course, for the response... and by the way, buna treaba ai facut la Operatii, gabi!  :thumbup:

In Pascal, e wise sa lucrez in continuare cu fisiere text

Stii, eu nu prea sunt familiarizat cu limbile astea straine. Ai putea te rog sa postezi in scumpul nostru grai mioritic?

Edit: Se pare ca am postat in acelasi timp cu devil :-'


Titlul: Răspuns: 605 Economie
Scris de: Bogdan-Cristian Tataroiu din Ianuarie 04, 2008, 11:24:53
:-? ce-s "fisierele cu tip"?


Titlul: Răspuns: 605 Economie
Scris de: Cezar Mocan din Ianuarie 04, 2008, 13:07:12
Faci un record (struct), de exemplu:
Cod:
type elev=record
                nota1:longint;
                nota2:longint;
                end;
var clasa:array[1..100] of elev;
Si declari fisieru de tipu elev (asta nu mai stiu exact cum se facea)...
Si apoi poti citi direct variabila de tip elev din fisier, adica
Cod:
 readln(fisier,v[i]) 
ca stie el sa citeasca toate campurile.
Asta stiam eu ca este in Pascal... in C nu stiu daca e tot asa


Titlul: Răspuns: 605 Economie
Scris de: Simina Pitur din Ianuarie 04, 2008, 13:24:14
multumesc si-mi cer scuze! mea culpa. deh, pana la urma si pascal si C sunt in engleza.  :P
(Ave Cezar!)


Titlul: Răspuns: 605 Economie
Scris de: Andrei Grigorean din Ianuarie 04, 2008, 16:13:23
mea culpa.

Serios acum, ti-e asa greu sa scrii in limba ta nativa? (Presupun ca esti romanca, sper sa nu gresesc).


Titlul: Răspuns: 605 Economie
Scris de: Simina Pitur din Ianuarie 04, 2008, 17:07:03
:tomato: recunosc c-am vrut sa te tachinez si cu o limba moarta!  :roll:

gata, sa ne intoarcem la topic!  multumesc de indicii.


Titlul: Răspuns: 605 Economie
Scris de: Florin Marius Popescu din Ianuarie 07, 2008, 16:46:44
fratilor am nevoie de ajutorul vostru. trimit solutia problemei si imi apare punctajul este 0 cu mesajul Non-zero exit status. ce vrea sa spuna mesajul asta. PS: sursa e facuta in pascal  ](*,)


Titlul: Răspuns: 605 Economie
Scris de: Andrei Popescu din Ianuarie 09, 2008, 02:32:05
fratilor am nevoie de ajutorul vostru. trimit solutia problemei si imi apare punctajul este 0 cu mesajul Non-zero exit status. ce vrea sa spuna mesajul asta. PS: sursa e facuta in pascal  ](*,)

Mesajul iti arata ca programul tau nu a fost rulat pana la final, iar astfel nu a returnat valoarea 0.
Motivul este ca s-a incercat o accesare dupa limita vectorului declarat. 

In alte probleme iti poate aparea acelasi mesaj si din alte cauze, documenteaza-te! 
http://infoarena.ro/documentatie/evaluator (http://infoarena.ro/documentatie/evaluator)







Titlul: Răspuns: 605 Economie
Scris de: Florin Marius Popescu din Ianuarie 09, 2008, 23:36:22

Motivul este ca s-a incercat o accesare dupa limita vectorului declarat. 


si ce ar trebui sa fac ? pur si simplu nu imi dau seama, cand compilez in pascal merge fara discutii dar cand trimit solutia imi da mesajul Non-zero exit status. care-i treaba ce tre sa fac la vectorii aia ce sa modific in sursa  :horsy: :horsy: :-({|=


Titlul: Răspuns: 605 Economie
Scris de: Savin Tiberiu din Ianuarie 10, 2008, 00:05:32
pai poti sa ai ceva de genu asta

Cod:
var a:array[1..100] of integer;

....

for i:=1 to 3000 do a[i]:=1;

in acel "for" accesezi la un moment dat a[101],a[102]..a[3000] care nu exista. Incearca sa iti dai niste teste mai mari sa vezi dak merge. Ce trebuie tu sa faci ca sa mearga ar trebui sa iti dai seama acum.


Titlul: Răspuns: 605 Economie
Scris de: Alex Mircescu din Mai 06, 2008, 12:14:12
eu chiar nu pricep ce are problema asta... Am facut-o (sper eu perfect)... cu un vector (in care retineam cele n nr) care il sortam, porneam de la cel mai mic si dupa aceea eliminam cele divizibile cu el... si faceam tot asa cu urmatorul eliminat... care-i bug-ul?! :agent: Pls help me.... ](*,)


Titlul: Răspuns: 605 Economie
Scris de: Pripoae Teodor Anton din Mai 06, 2008, 12:27:59
vezi ca si eu ma chinui cu ac problema. tu iei cazurile cand se poate obtine ca suma? adica 8 se obtine din 3 si 5 de exemplu


Titlul: Răspuns: 605 Economie
Scris de: Alex Mircescu din Mai 07, 2008, 18:36:55
da l-am luat... un test ceva plzz? tot nu-mi dau seama :'( ](*,)


Titlul: Răspuns: 605 Economie
Scris de: Serban Andrei Stan din Mai 07, 2008, 19:21:58
Incearca-le pe astea...

Cod:
14
13
2
189
3
18
29
398
192
38
182
8930
31
34008
18203

12
10
20
30
47815
50000
49999
10
19823
7291
47381
2810
1

18
19272
182
18949
281
38540
283
4840
283
4
42721
46738
4839
47329
25329
47832
33823
3
5


Mie imi da (sursa 100) :
Cod:
2
2
3

1
1

3
3
4
5

Sper sa nu fi bushit ceva  :P


Titlul: Răspuns: 605 Economie
Scris de: Pajarcu Alexandru-Petrisor din Mai 07, 2008, 19:29:19
@savim: al treilea nu ar trebui sa fie 3 3 4 5?


Titlul: Răspuns: 605 Economie
Scris de: Serban Andrei Stan din Mai 07, 2008, 19:32:06
Ba da, ai drepatete, o sa modific in topic. Merci si scuze.


Titlul: Răspuns: 605 Economie
Scris de: Andrei Misarca din Mai 07, 2008, 22:14:50
Cum ati scos O(N*Vmax) (k in solutie), k io n-am reusit mai putin de O(N^2*Vmax), pt ca trebuiesc luate toate sumele posibile cu numerele respective din cate am inteles  :)


Titlul: Răspuns: 605 Economie
Scris de: Gabriel Bitis din Mai 07, 2008, 22:21:14
Eu am sortat valorile, si pt fiecare moneda am parcurs de la 0 la Vmax pt a afla sumele ce se pot forma cu el, daca gasesc una care nu se formase pana atunci, inseamna ca moneda respectiva trebuie afisata.


Titlul: Răspuns: 605 Economie
Scris de: Andrei Misarca din Mai 07, 2008, 22:26:31
Mersi ... am scos suta  :yahoo:. Faceam o parcurgere care nu-si avea rostu si de asta scoteam O(N^2*Vmax)


Titlul: Răspuns: 605 Economie
Scris de: Tirca Bogdan din Decembrie 25, 2008, 10:07:05
ce nu e bine in abordarea asta?
Cod:
for(i=1;i<=n;i++)
 {
  s+=a[i];
  if(!v[i])
   v[i]=2,min++;
  for(i1=a[i]*2;i1<=max+1;i1+=a[i])
   if(!v[i1]) v[i1]=1;
  for(i1=s;i1<=max+1;i1+=s)
   if(!v[i1]) v[i1]=1;
 }
 fprintf(g,"%ld\n",min);
 for(i1=1;i1<=max+1;i1++)
  if(v[i1]==2)
   fprintf(g,"%ld\n",a[i1]);
Asta dupa ce am sortat vectorul.Vad ca am un timp fffoarte scurt ceea ce a cam ciudat ... max e maximul din vector si cred nu are rost sa merg pana la 50000 ci doar pana la cea mai mare valoare + (1sau0)


Titlul: Răspuns: 605 Economie
Scris de: Airinei Adrian din Decembrie 25, 2008, 12:16:47
Tu nu calculezi corect toate sumele care se pot forma. De exemplu daca as avea valorile 2, 5 si 7 cred ca folosind abordarea ta nu ai lua in calcul faptul ca suma 12 se poate forma folosind o valoare 5 si una 7. Trebuie sa folosesti un algoritm gen knapsack (http://en.wikipedia.org/wiki/Knapsack_problem) pentru a calcula corect acele sume care se pot forma.


Titlul: Răspuns: 605 Economie
Scris de: Tirca Bogdan din Decembrie 25, 2008, 17:55:47
da dar 12 va fi ocupat deja deoarece e multiplu de 2 (v[12]==1).Da,crek nu e suficient sa fac doar acea suma dar daca le'as face cum mai intra programu in O(N*VMAX)?


Titlul: Răspuns: 605 Economie
Scris de: Rus Cristian din Decembrie 25, 2008, 19:45:05
tocmai am facut problema asta in N*Vmax, intra lejer


Titlul: Răspuns: 605 Economie
Scris de: Dragos Oprica din Decembrie 27, 2008, 21:49:03
primesc kbs la 8 teste  :x
am declarat un vector de 50000 si 2 de 1000, e prea mult? :?


Titlul: Răspuns: 605 Economie
Scris de: Andrei-Bogdan Antonescu din Decembrie 27, 2008, 21:59:16
Nu iei kbs de la prea multa memorie alocata cred, daca era asa, luai ori kbs pe toate testele ori mle(memory limit exceeded) pe unele.
Faci alceva dubios poate iesi din vector.


Titlul: Răspuns: 605 Economie
Scris de: Dragos Oprica din Decembrie 28, 2008, 10:24:23
multumesc, mam prins si eu de ciudatenia mea :D

intrun final am luat 100 :yahoo:


Titlul: Răspuns: 605 Economie
Scris de: Mitu Florin Danut din Aprilie 15, 2009, 05:16:18
Eu nu inteleg ce se intampla la problema asta, sursa mea este compilata in pascal, am dat si exemplele de pe topic toate merg, dar cand o incarc imi apare "Non zero exit-status" :wink:  am verificat sa nu-mi iasa din vector, dar mi se pare in regula.    Ajutati-ma va rog!!!!!!     :-k :-k   sursa are codul #304725


Titlul: Răspuns: 605 Economie
Scris de: MciprianM din Aprilie 15, 2009, 06:45:45
Citat
Non-zero exit status: Programul tau a returnat o valoare diferita de 0. Cel mai probabil ai uitat return 0; sau ceva similar. Poti primi acest mesaj si in loc de mesajul "Killed by signal": verifica si dupa erorile mentionate deasupra.
Mai multe detalii despre evaluator gasesti aici.http://infoarena.ro/documentatie/evaluator (http://infoarena.ro/documentatie/evaluator)


Titlul: Răspuns: 605 Economie
Scris de: Mitu Florin Danut din Aprilie 15, 2009, 07:37:45
nu inteleg cum poate returna 0, daca nu folosesc nici o functie, iar programul cand il compilez e ok, da rezultatul bun. (lucrez in pascal, iar aici nu am return 0) :wink: :wink:


Titlul: Răspuns: 605 Economie
Scris de: MciprianM din Aprilie 15, 2009, 11:40:46
Nu prea stiu Pascal, dar incearca sa scrii exit(0);
Ceva de genul:
Cod:
program economie;
begin
...........
exit(0)
end
;
Desi nu cred ca e asta problema. Mai citeste aici: http://infoarena.ro/forum/index.php?topic=364.0 (http://infoarena.ro/forum/index.php?topic=364.0)  prima pagina .
Incearca sa cresti dimensiunile vectorilor si sa recitesti codul cu atentie; poate iti gasesti greseala.


Titlul: Răspuns: 605 Economie
Scris de: Mitu Florin Danut din Mai 17, 2009, 12:29:07
Ma tot chinui la problema asta, imi spuneti si mie va rog ce nu e bine in abordarea asta: La toate testele iau raspuns gresit
Cod:
   1. program pascal;  
   2. var f,g:text;    t:array[1..50000] of byte; x,p:array[1..1000] of longint; 
   3.                  max,i,k,j,n,aux,c:longint; 
   4.   procedure citire; 
   5.   begin 
   6.   assign(f,'economie.in'); reset(f); 
   7.   assign(g,'economie.out'); rewrite(g); 
   8.   readln(f,n); 
   9.   
  10.   for i:=1 to n do readln(f,x[i]); 
  11.   max:=50000; 
  12.   for i:=1 to max do t[i]:=1; 
  13.   close(f); 
  14.   end; 
  15.   
  16.   procedure sort(s,d:longint); 
  17.   var a,b,aux,ia:longint; 
  18.   begin 
  19.     a:=s; b:=d; 
  20.     repeat 
  21.     while x[a]<x[b] do b:=b-1; 
  22.     aux:=x[a]; x[a]:=x[b]; x[b]:=aux; ia:=1; a:=a+1; 
  23.     if a<b then 
  24.             begin 
  25.             while x[a]<x[b] do a:=a+1; 
  26.             if a<>b then 
  27.              begin 
  28.              aux:=x[a]; x[a]:=x[b]; x[b]:=aux; ia:=0; b:=b-1; 
  29.              end; 
  30.             end; 
  31.     until b<=a; 
  32.     if a-ia>s then sort(s,a-ia); 
  33.     if a-ia+1<d then sort(a-ia+1,d); 
  34.   end; 
  35.   
  36.   procedure sorte; 
  37.   begin 
  38.   k:=0; 
  39.   for j:=1 to n do 
  40.     begin 
  41.     if  t[x[j]]=1 then 
  42.        begin 
  43.        k:=k+1; p[k]:=x[j]; t[x[j]]:=0; 
  44.        end; 
  45.     for i:=1 to max do 
  46.     if t[i]=0 then 
  47.              begin 
  48.              c:=i+x[j]; 
  49.              if (c<=max) then t[c]:=0; 
  50.              end; 
  51.      end; 
  52.   end; 
  53.   
  54.   procedure afisare; 
  55.   begin 
  56.   writeln(g,k); 
  57.   for i:=1 to k do writeln(g,p[i]); 
  58.   close(g); 
  59.   end; 
  60.   
  61. begin 
  62. citire; 
  63. sort(1,n); 
  64. sorte; 
  65. afisare; 
  66. end. 
Imi cer scuze pentru cod  dar chiar nu stiu ce sa mai fac sa iau si eu 100. Va rog sa-l stergeti daca e neregulamentara  expunerea lui.   :)


Titlul: Răspuns: 605 Economie
Scris de: Vlad Eugen Dornescu din Martie 26, 2010, 14:17:21
Rog pe e cineva cu o sursa de 100 sa genereze 2-3 exemple, sa incerc si eu sa ma prind ce gresesc.Pe ale mele da bine, si si pe celelalte postate in topic.  :ok:
Multumesc.