Titlul: 003 Bursa Scris de: Andrei Grigorean din Februarie 21, 2012, 14:37:21 Aici puteţi discuta despre problema Bursa (http://infoarena.ro/problema/bursa).
Titlul: Răspuns: 003 Bursa Scris de: Heidelbacher Andrei din Februarie 21, 2012, 21:58:33 As vrea sa va rog, daca ma poate ajuta cineva la problema Bursa. Am gasit o solutie cu programare dinamica, dar care obtine numai 80 de puncte. Am incercat si solutia greedy si obtin numai 30 de puncte. Va rog sa va uitati peste sursa mea, sa vedeti ce greseti, pentru ca nu imi dau seama. Va multumesc.
Cod: #include <cstdio> Titlul: Răspuns: 003 Bursa Scris de: MciprianM din Februarie 21, 2012, 22:08:28 Poate te ajuta daca te uiti la cazuri in care trebuie sa pui si egal in loc de mai mare sau mai mic strict.
Titlul: Răspuns: 003 Bursa Scris de: Fl. C. din Februarie 21, 2012, 23:22:29 Poate ma lamureste si pe mine cineva cu ce gresesc in algoritmul urmator. Merge pe 6 teste din cele 10. Ideea algoritmului este de a afla toate subsecventele crescatoare din sir. Daca gasesc o subsecventa crescatoare in sir, atunci cumpar cat pot de multe actiuni la inceputul subsirului crescator, si le vand pe toate (actiunile) la sfarsitul subsirului.
Cod: #include <cstdio> Titlul: Răspuns: 003 Bursa Scris de: Gabriel Bitis din Februarie 21, 2012, 23:35:47 Trebuie sa declari val_act ca variabila long long pe linia 30 si sa afisezi rezultatul cu %lld.
Titlul: Răspuns: 003 Bursa Scris de: Heidelbacher Andrei din Februarie 22, 2012, 00:01:03 Va multumesc mult, asta era problema, a iesit de 100 :yahoo:
Titlul: Răspuns: 003 Bursa Scris de: Fl. C. din Februarie 22, 2012, 12:06:52 Multumesc foarte mult. Asta era problema. Nu am fost atent si am luat 0 puncte in loc de 100. Altadata voi fi mai atent.
Titlul: Răspuns: 003 Bursa Scris de: Telechi Nicolae din Februarie 24, 2012, 23:38:37 EU CHEAR NU INTZELEG , imi pare ca ideia este corecta , cine ma poate ajuta va rog sami explicatzi ce nu e bine!
#include<stdio.h> #define dim 100010 int n; long long s; int v[dim],c[dim]; Cod: int main(){ Titlul: Răspuns: 003 Bursa Scris de: George Marcus din Februarie 25, 2012, 00:13:41 Poate ar fi mai util sa ne spui ideea ta. Oricum, vezi ca s-ar putea sa cumperi si sa vinzi de mai multe ori.
Titlul: Răspuns: 003 Bursa Scris de: Horatiu din Februarie 07, 2014, 16:04:13 Imi poate spune cineva daca au ceva special fata de celelalte testele 2 si 10?
La toate testele imi da OK, doar la cele doua imi da INCORECT si nu imi dau seama unde am gresit. Multumesc. Titlul: Răspuns: 003 Bursa Scris de: George Marcus din Februarie 07, 2014, 16:55:16 Citeste N+1 b-uri.
Titlul: Răspuns: 003 Bursa Scris de: Munteanu Vlad din Februarie 27, 2014, 19:07:43 Ce inseamna Killed by signal?
Titlul: Răspuns: 003 Bursa Scris de: Valeriu Motroi din Iulie 16, 2014, 11:57:38 http://www.infoarena.ro/documentatie/evaluator
Citește aici despre mesajele care le poate da evaluatorul Titlul: Răspuns: 003 Bursa Scris de: Valeriu Motroi din Iulie 16, 2014, 12:16:21 Nu sunt sigur ce e greșit și ce e coret, însă rezolvând problema, am hotărât să citesc și soluțiile oficiale, unde era folosit maxim/minim local.
Eu am rezolvato doar cu condiția a[ i ] > a[ i-1 ] adică în ziua i-1 cumpăram acțiuni, și în ziua i le vindeam, astfel am obținut 100 de puncte, îmi poate cineva zice dacă o astfel de abordare este corectă? sau testele sunt slabe? Titlul: Răspuns: 003 Bursa Scris de: Radu Toporan din Martie 03, 2016, 12:53:01 Isi da cineva seama ce e gresit la:
#include <cstdio> using namespace std; int n,i,v[500005]; long long s,sinit,actiuni; int main() { freopen("bursa.in","r",stdin); freopen("bursa.out","w",stdout); scanf("%d%lld",&n,&s); for (i=1; i<=n; i++) scanf("%d",&v); sinit=s; v[0]=2000000000; v[n+1]=-2000000000; for (i=1; i<=n; i++) if (v[i-1]<v && v>v[i+1]) { s=s+actiuni*v; actiuni=0; } else if (v[i-1]>v && v<v[i+1]) { actiuni=actiuni+s/v; s=s%v; } printf("%lld\n",s-sinit); return 0; } Titlul: Răspuns: 003 Bursa Scris de: Sichet Paul din Mai 24, 2017, 18:23:50 Nu stiu de ce iau 0 puncte la pb. asta . I-am dat multe teste si cu toate merge. Va rog , daca se poate, sa ma ajutati.
Cod sursa: #include <fstream> using namespace std; long long v[100002]; int main() { long long s,nr=0,n,i,Max=0; ifstream f("bursa.in"); ofstream g("bursa.out"); f>>n>>s; for (i=1;i<=n;++i) { f>>v; Max=max(Max,v); } v[0]=Max+1; for (i=1;i<=n;++i) { if (v>v[i-1] && v>v[i+1]) { s+=(v*nr); nr=0; } if (v<v[i+1] && v<v[i-1]) { nr=s/v; s-=(nr*v); } } g<<s<<'\n'; return 0; } Titlul: Răspuns: 003 Bursa Scris de: Sichet Paul din Mai 24, 2017, 18:25:53 #include <fstream>
using namespace std; long long v[100002]; int main() { long long s,nr=0,n,i,Max=0; ifstream f("bursa.in"); ofstream g("bursa.out"); f>>n>>s; for (i=1;i<=n;++i) { f>>v; Max=max(Max,v); } v[0]=Max+1; for (i=1;i<=n;++i) { if (v>v[i-1] && v>v[i+1]) { s+=(v*nr); nr=0; } if (v<v[i+1] && v<v[i-1]) { nr=s/v; s-=(nr*v); } } g<<s<<'\n'; return 0; } Scuze.Am gresit putin la cod mai devreme |