Pagini: 1 [2] 3 4   În jos
  Imprimă  
Ajutor Subiect: 049 Barbar  (Citit de 40381 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
u-92
Vizitator
« Răspunde #25 : Noiembrie 26, 2005, 10:34:09 »

Brick wall  tot 70.. WA pe 1,2 si 5  Brick wall
Memorat
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #26 : Noiembrie 28, 2005, 14:03:30 »

In primu rand tu iei WA nu TLE, dar am "masurat" citirea ta pe un Celeron la 2.40 GHz si 256 MB RAM si dureaza, pentru testul, maxim 0.14. Mai testeaza-ti solutia. Uite, incearca p'astea :

Cod:
3 3
***
IDO
***

Cod:
4 4
....
....
IDO.
....


Pentru primu test raspunsul este 0, iar pentru al doilea raspunsul este 1.

Good luck. Very Happy
Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
u-92
Vizitator
« Răspunde #27 : Noiembrie 28, 2005, 16:09:26 »

pe primul imi da 0, pe al doilea 1.. si n-am zis ca iau TLE, insa cu prima citire caracter cu caracter luam 30 si daca citeam tot sirul luam 70 de asta am zis eu ca mi se pare dubios
Memorat
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #28 : Noiembrie 29, 2005, 10:41:05 »

Confused Asta chiar e dubios rau... eu am incercat sa citesc caracter cu caracter si am luat 100. Daca vrei (doar daca nu te deranjeaza), da-mi solutia ta pe mail si ma uit peste ea ([email protected]).
Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
u-92
Vizitator
« Răspunde #29 : Noiembrie 29, 2005, 17:04:14 »

nu ma deranjeaza deloc, o s-o pun aici poate mai are cineva de postat o idee
[ am scos sursa ... ]

daca scot alea din comentariu de la citire, iau 20 (am vazut acum).. totusi cele doua chestii nu sunt echivalente?

mersi.
Memorat
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #30 : Noiembrie 29, 2005, 23:28:16 »

in functia bf, in loc de :
Cod:
c[++sf].x = i + dx[k];
c[sf].y = j + dy[k];

pune
Cod:
c[sf].x = i + dx[k];
c[sf++].y = j + dy[k];


prima daca cand intra in "if", variabila "sf" este 1. tu mai introduci in coada (c[1]) pozitia (0, 0) ca vecin al lui (i, j) si acest lucru nu e intodeanuna adevarat.

uite testu pe care te-am prins  Tongue :
Cod:
6 5
...I.
.....
...O.
..***
...D.


tie iti da 3, iar corect este 6.
acum iei 100  Winner 1st place  si ai grija pe viitor, ca asa ceva te poate costa mult mai mult de 30 de puncte.
Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
u-92
Vizitator
« Răspunde #31 : Noiembrie 29, 2005, 23:33:45 »

ca sa vezi ce greseam.. bug`urile astea..
mersi mah, sa traiesti  Dancing
Memorat
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #32 : Noiembrie 29, 2005, 23:36:50 »

n-ai pentru ce Smile
tu esti Astronomy ?
Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
u-92
Vizitator
« Răspunde #33 : Noiembrie 29, 2005, 23:39:37 »

na ca mi s-a dezvaluit identitatea  Very Happy
Memorat
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #34 : Noiembrie 29, 2005, 23:40:34 »

Very Happy
Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
alex_prg
Strain


Karma: -5
Deconectat Deconectat

Mesaje: 21



Vezi Profilul
« Răspunde #35 : Aprilie 03, 2006, 22:04:54 »

nu ma prind de problema .... ma gandesc ca trebuie construit un graf dar nam cum sa iau R*C noduri nu ? ... ma ajuta cineva ?
Memorat

reality is just an illusion created by the lack of alcohol
Coty
Nu mai tace
*****

Karma: 6
Deconectat Deconectat

Mesaje: 235



Vezi Profilul WWW
« Răspunde #36 : Iulie 29, 2006, 17:33:44 »

OK ... ignorand multe WA ca stiu ca nu prea mi-am dat interesu sa o fac din prima bine... stit de la ce pot lua SIGABRT??? ( abort parca da doar userul daca vrea Whistle altfel e sigint)
Memorat
Marius
Nu mai tace
*****

Karma: 154
Deconectat Deconectat

Mesaje: 572



Vezi Profilul
« Răspunde #37 : Iulie 29, 2006, 17:54:25 »

OK ... ignorand multe WA ca stiu ca nu prea mi-am dat interesu sa o fac din prima bine... stit de la ce pot lua SIGABRT??? ( abort parca da doar userul daca vrea Whistle altfel e sigint)

http://infoarena.devnet.ro/forum/index.php/topic,846.0.html

Eu am depasit memoria. Cred ca si tu ai facut acelasi lucru.
« Ultima modificare: Iulie 29, 2006, 17:57:17 de către Marius » Memorat

Faceti lucrurile simplu: pe cat de simplu posibil, dar nu mai simplu.
azotlichid
Echipa infoarena
Nu mai tace
*****

Karma: 50
Deconectat Deconectat

Mesaje: 260



Vezi Profilul
« Răspunde #38 : Iulie 30, 2006, 20:51:07 »

Eu primeam SIGABRT cand accesam elemente negative ale unui vector si citeam/scriam in afara zonei de memorie alocata programului.
Memorat
Coty
Nu mai tace
*****

Karma: 6
Deconectat Deconectat

Mesaje: 235



Vezi Profilul WWW
« Răspunde #39 : Iulie 31, 2006, 08:23:51 »

OK ... ignorand multe WA ca stiu ca nu prea mi-am dat interesu sa o fac din prima bine... stit de la ce pot lua SIGABRT??? ( abort parca da doar userul daca vrea Whistle altfel e sigint)

http://infoarena.devnet.ro/forum/index.php/topic,846.0.html

Eu am depasit memoria. Cred ca si tu ai facut acelasi lucru.
am uitat de pagina asta Whistle sorry  Embarassed

Cod:
struct point
{
        long x, y, v;
};

long R, C;
char A[MAX][MAX];
long V[MAX][MAX];
long B[MAX][MAX];

point mv[4] = {{-1,0},{1,0},{0,1},{0,-1}}; // vector of moves
queue <point> D;
point I, O;
long answer=0;

singura cu dimensiune variabila este coada... deci din pricina ei sa nu imi intre??? 
Memorat
cos_min
Nu mai tace
*****

Karma: 48
Deconectat Deconectat

Mesaje: 493


live


Vezi Profilul
« Răspunde #40 : Iulie 31, 2006, 08:40:55 »

nush daca ii de la asta ... da intra si in int nu trebuie folosit long
Memorat

vid...
Coty
Nu mai tace
*****

Karma: 6
Deconectat Deconectat

Mesaje: 235



Vezi Profilul WWW
« Răspunde #41 : Iulie 31, 2006, 09:17:57 »

din cate stiu pe compilatoarele de 32 de biti, int == long... asa cum pe alea de 64 int == long long, nu?
Memorat
Marius
Nu mai tace
*****

Karma: 154
Deconectat Deconectat

Mesaje: 572



Vezi Profilul
« Răspunde #42 : Iulie 31, 2006, 14:47:41 »

din cate stiu pe compilatoarele de 32 de biti, int == long... asa cum pe alea de 64 int == long long, nu?

Da. Eu folosesc Visual C++ si are compilator pe 32 de biti iar int == long. Cred ca e valabil si pentru cel de 64.

am uitat de pagina asta Whistle sorry  Embarassed

Mi-a fost lene sa explic din nou si ti-am dat un link.
Memorat

Faceti lucrurile simplu: pe cat de simplu posibil, dar nu mai simplu.
Robytzza
De-al casei
***

Karma: -49
Deconectat Deconectat

Mesaje: 129



Vezi Profilul
« Răspunde #43 : Februarie 11, 2008, 21:42:17 »

care e faza cu ultimul test..am vazut ca este cu -1 ..insa nu vad ce gresesc..am pus conditia daca nu poate sa ajunga la final sa afiseze -1 ..si tot iau incorect Sad(

Gata m rezolvat 100 <:-P ,ms Marius Wink
« Ultima modificare: Februarie 11, 2008, 23:06:21 de către Ionescu Robert Marius » Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #44 : Aprilie 08, 2008, 10:38:56 »

Flacarile dragonilor pot trece prin zid? Adica daca am ceva de genu
Cod:
D*.
Distana pana la celula libera e 2 sau e data de distanta pana la un alt dragon?

L.E. : mi-am dat seama ca dragonii nu-s destul de puternici ca sa trimita flacari prin zid Smile
« Ultima modificare: Aprilie 08, 2008, 11:00:54 de către Andrei Misarca » Memorat
stocarul
Nu mai tace
*****

Karma: 49
Deconectat Deconectat

Mesaje: 203



Vezi Profilul
« Răspunde #45 : Aprilie 14, 2008, 17:04:41 »

Am si eu o problema cu testele 7 si 9.
La 7 primesc Wrong answer!, iar la 9 Killed by signal 11(SIGSEGV).
As vrea si eu cele doua teste daca se poate Smile
stocarul [at] yahoo.com
Multumesc:)

Am pus aici si sursa:
Cod:
#include <fstream>
using namespace std;
fstream in,out;
const int dx[] = {0,0,1,-1};
const int dy[] = {1,-1,0,0};
long r,c;
long i,j,k;
long m[1001][1001];
long b[1001][1001];
long di[1000001],dj[1000001],ds[1000001];
long d=0,t;
long x,y,x1,y1;
long l,h,ma;
long suma;
char v[1001];

int nr_max(long i,long j)
  {
  long x=0;
  x=m[i][j];
  for(int k=0;k<4;k++)
    if(0<i+dx[k]<=r && 0<j+dy[k]<=c && m[i+dx[k]][j+dy[k]]>x)
      x=m[i+dx[k]][j+dy[k]];
  return x;
  }
int nr_min(long x,long y)
  {
  if(x>y) return y;
  else return x;
  }
void umple(long i,long j,long x)
  {
  for(int k=0;k<4;k++)
    if(0<i+dx[k]<=r && 0<j+dy[k]<=c && m[i+dx[k]][j+dy[k]]>=x && b[i+dx[k]][j+dy[k]]==0)
      {
      b[i+dx[k]][j+dy[k]] = 1;
      umple(i+dx[k],j+dy[k],x);
      }
  }
void goleste()
  {
  long i,j;
  for(i=1;i<=r;i++)
    for(j=1;j<=c;j++)
      b[i][j]=0;
  }

int main()
{
in.open("barbar.in",ios::in);
out.open("barbar.out",ios::out);
in>>r>>c;
in.get();
for(i=1;i<=r;i++)
  {
  in.getline(v,c+2,'\n');
  for(j=0;j<c;j++)
    {
    if(v[j]=='.') m[i][j+1]=3000000;
    else if(v[j]=='*') m[i][j+1]=-1;
    else if(v[j]=='D')
      {
      m[i][j+1]=0;
      d++;
      di[d]=i;
      dj[d]=j+1;
      }
    else if(v[j]=='I')
      {
      m[i][j+1]=3000000;
      x=i;
      y=j+1;
      }
    else
      {
      m[i][j+1]=3000000;
      x1=i;
      y1=j+1;
      }
    }
  }
in.close();
t=d;
for(i=1;i<=t;i++)
  {
  suma = m[di[i]][dj[i]]+1;
  for(j=0;j<4;j++)
    if(0<di[i]+dx[j]<=r && 0<dj[i]+dy[j]<=c && m[di[i]+dx[j]][dj[i]+dy[j]]>suma)
      {
      m[di[i]+dx[j]][dj[i]+dy[j]] = suma;
      t++;
      di[t]=di[i]+dx[j];
      dj[t]=dj[i]+dy[j];
      }
  }

h=nr_min(nr_max(x,y),nr_max(x1,y1));
k=-1;
l=0;
while(l<=h)
  {
  if(l>0 || h>0) ma=(l+h)/2;
    else ma=0;
  umple(x,y,ma);
  if(b[x1][y1]==1)
    {
    k=ma;
    l=ma+1;
    }
  else
    h=ma-1;
  goleste();
  }
out<<k<<endl;
out.close();
return 0;
}

« Ultima modificare: Aprilie 16, 2008, 18:04:43 de către Tutunaru Cosmin Mihai » Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #46 : Aprilie 14, 2008, 17:22:42 »

In conditiile in care sursele nu se fac publice sansa sa le primesti e destul de mica Wink dar ai grija la program sa nu in vre-un ciclu infinit(o data am primit park Killed by signal 11 pt asta)

L.E. : Nu am avut destula rabdare sa urmaresc sursa, dar am un sfat: knd faci o parcurgere in latime(i se mai zice si algorimul lui lee), foloseste un sir de constante pentru directii(e mai usor de scris si de urmarit)
Cod:
const int dx[] = {-1, 1, 0, 0},
          dy[] = { 0, 0, 1,-1};

Asa se declara, iar cand vrei sa vezi toti vecinii unui element faci
Cod:
for(int k=0; k<4; k++)
{
  ivec = iact + dx[k];
  jvec = jact + dy[k];
...
}

unde iact si jact sunt indicii elementului curent(caruia vrei sai afli vecinii), iar ivec si jvec sunt indicii elementelor vecine
« Ultima modificare: Aprilie 14, 2008, 18:23:25 de către Andrei Misarca » Memorat
fireatmyself
Nu mai tace
*****

Karma: 36
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #47 : Aprilie 14, 2008, 18:49:24 »

[...]
L.E. : Nu am avut destula rabdare sa urmaresc sursa, dar am un sfat: knd faci o parcurgere in latime(i se mai zice si algorimul lui lee), foloseste un sir de constante pentru directii(e mai usor de scris si de urmarit)
[...]

nu se numeste algoritmul lui Lee (cum apare gresit in unele manuale de informatica), ci Breadth-first search Smile.
Memorat

Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #48 : Aprilie 14, 2008, 18:53:47 »

Pai am scris k i se mai zice algoritmul lui Lee (in mod gresit, in manualele de info), n-am zis k asa se si numeste  Smile
Memorat
stocarul
Nu mai tace
*****

Karma: 49
Deconectat Deconectat

Mesaje: 203



Vezi Profilul
« Răspunde #49 : Aprilie 14, 2008, 19:05:56 »

In conditiile in care sursele nu se fac publice sansa sa le primesti e destul de mica Wink dar ai grija la program sa nu in vre-un ciclu infinit(o data am primit park Killed by signal 11 pt asta)

L.E. : Nu am avut destula rabdare sa urmaresc sursa, dar am un sfat: knd faci o parcurgere in latime(i se mai zice si algorimul lui lee), foloseste un sir de constante pentru directii(e mai usor de scris si de urmarit)
Cod:
const int dx[] = {-1, 1, 0, 0},
          dy[] = { 0, 0, 1,-1};

Asa se declara, iar cand vrei sa vezi toti vecinii unui element faci
Cod:
for(int k=0; k<4; k++)
{
  ivec = iact + dx[k];
  jvec = jact + dy[k];
...
}

unde iact si jact sunt indicii elementului curent(caruia vrei sai afli vecinii), iar ivec si jvec sunt indicii elementelor vecine
Multumesc mult pentru aceasta idee. Nu m-am gandit ca se poate scrie si asa, si intradevar e mult mai usor de scris algoritmul. Multumesc inca o data Yahoo!

p.s. Si totusi, de ce i-au doar 80 pct?
« Ultima modificare: Aprilie 20, 2008, 17:12:07 de către Tutunaru Cosmin Mihai » Memorat
Pagini: 1 [2] 3 4   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines