Pagini: 1 ... 4 5 [6] 7   În jos
  Imprimă  
Ajutor Subiect: 484 Numere 5  (Citit de 36068 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #125 : Martie 24, 2010, 18:27:34 »

Nu pot sa inteleg de ce primesc kill by signal 11 , pe totate testele mele merge perfect  Brick wall
« Ultima modificare: Martie 24, 2010, 18:44:41 de către alexandru » Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #126 : Martie 24, 2010, 18:42:03 »

Incearca testele OJI, care sunt aici
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #127 : Martie 24, 2010, 18:44:22 »

Am gasit ce era, cand marcam eu consideram ca un numar apartie intre [ 1, 500 000 ] nu [ 1, 1000000 ]. Smile
« Ultima modificare: Martie 25, 2010, 12:56:55 de către alexandru » Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #128 : Martie 24, 2010, 23:16:18 »

@Simoiu Robert & Dornescu Vlad

Ar trebui sa incetati amandoi. Fiecare aveti cate un - la karma pentru tot al doilea post si aveti destul de multe posturi raportat la data in care v-ati inscris pe site. E destul de clar ca cel mai des spuneti aberatii amandoi. Ar trebui sa va mai opriti din postat intr-una, sa ajutati doar atunci cand sunteti siguri ca sunteti in masura sa faceti asta si sa acordati o mare atentie celor spuse, fie ca cereti sau ca dati sfaturi.
Memorat

Am zis Mr. Green
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #129 : Martie 25, 2010, 09:09:25 »

Dar eu l-am ajutat pe Idomir Alin, poate sa va spuna si el cand intra ...
Memorat
rares192
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #130 : Martie 28, 2010, 14:19:57 »

Nu intelg de ce la testele 5, 7 si 8 primesc Memory limit exceeded ca eu am impresia ca ma incadrez in memorie

<code>
Cod:
#include<fstream>
using namespace std;

ifstream fin("numere5.in");
ofstream fout("numere5.out");

bool a[500004];

int main()
{
long c, i, n, b;
fin>>n;

b=n*n;
if(b>500003)
b=500003;

for(i=1; i<=n*n; i++)
{
fin>>c;
if(c<=500003)
a[c]=true;
}
fin.close();

for(i=1; i<=b; i++)
if(a[i]==0)
{
fout<<i<<" ";
i=n*n+3;
}

for(i=b; i>0; i--)
if(a[i]==0)
{
fout<<i;
i=0;
}

fout.close();
return 0;
}
</code>    

Multumesc anticipat pentru ajutor!

Editat de moderator: foloseste tagurile [ code] si [ /code] cand postezi cod, nu <code> </code>.
« Ultima modificare: Martie 28, 2010, 15:57:20 de către Gabriel Bitis » Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #131 : Martie 28, 2010, 18:25:51 »

Incearca in loc de
Cod:
bool a[500004];
asta :
Cod:
bitset<1000001>a
Si trebuie inclus headerul <bitset>; .
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #132 : Martie 28, 2010, 19:21:25 »

Merge si vector < bool >.
Memorat
rares192
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #133 : Martie 29, 2010, 10:20:06 »

Asa merge. Multumesc mult !  Yahoo! Applause
Memorat
ana.z
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #134 : Iunie 22, 2010, 14:54:56 »

 Brick wall Brick wall
Cod:
#include<stdio.h>
int main()
{int n,i,j;
freopen("numere5.in","r",stdin);
freopen("numere5.out","w",stdout);
scanf("%d",&n);
n=n*n;
char v[500001];
for(i=1;i<=n;i++)
{scanf("%d",&j);
if(j<=500000)
v[j]='1';}
if(500000<n)
n=500000;
for(i=1;i<=n;i++)
if(v[i]!='1')
{printf("%d ",i);
i=n+1;}
for(j=n;j>=1;j--)
if(v[j]!='1')
{
printf("%d",j);
j=0;
}
return 0;}

ce e gresit la sursa asta???imi da la 2 teste memory limit exeeded

Editat de admin: Foloseste tagul "code" atunci cand postezi surse.
« Ultima modificare: Iunie 22, 2010, 15:26:45 de către Andrei Grigorean » Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #135 : Iunie 22, 2010, 15:34:29 »

Incearca in loc de
Cod:
char v[500001];
asta :
Cod:
bitset<500001>v
Si trebuie inclus headerul <bitset>; .
Memorat
truenight
Strain


Karma: 4
Deconectat Deconectat

Mesaje: 23



Vezi Profilul
« Răspunde #136 : Februarie 13, 2011, 02:12:12 »

Sursa mea pica la 3 teste. Ma poate ajuta cineva? Multumesc!
Cod:

#include <stdio.h>

#define IN "numere5.in"
#define OUT "numere5.out"
#define N 60000

char v[N + 1];

int main(void) {

    long a, i, n, m;

    for(i = 1; i <= N; ++i) v[i] = 0;

    freopen(IN, "r", stdin);
    freopen(OUT, "w", stdout);

    scanf("%ld", &n);

    m = n * n;
    while(m--) { scanf("%ld", &a); if(a <= N) ++v[a]; }

    for(i = 1; v[i] && i <= n * n; ++i) ;
    printf("%ld ", i);

    for(; !v[i] && i <= n * n; ++i) ;
    printf("%ld", --i);

    return 0;
}
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #137 : Februarie 13, 2011, 13:09:57 »

Pune in loc de N = 60.000, N = 500.000, si ar trebui sa mearga Wink. Si daca nu intra in memorie, incearca variantele de mai sus.
Memorat
maritim
Vorbaret
****

Karma: 59
Deconectat Deconectat

Mesaje: 176



Vezi Profilul
« Răspunde #138 : Mai 03, 2011, 23:04:43 »

In sfarsit mi-a dat si mie cu memorie O(1) Smile ! E una dintre probleme "mici" de la care ai ce invata.
Memorat
vendetta
De-al casei
***

Karma: 72
Deconectat Deconectat

Mesaje: 122



Vezi Profilul
« Răspunde #139 : August 10, 2011, 11:42:15 »

pt vectorul de marcare puneti limita 1000000...primeam diferite raspunsuri, cand aveam limita 500000: killed by signal , time limit, memory limit iar dupa ce am schibat limita am luat 100 pct
Memorat
calin98
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #140 : Martie 26, 2012, 17:48:20 »

Lucrez in FreePascal si primesc eroarea Non-zero exit status. Acesta este programul:
Cod:
01.var a:array[1..500,1..500]of longint; 
02.b:array[1..250000]of byte;
03.f,g:text;
04.n:integer;
05.m,min,max,i,j:longint;
06.begin
07.assign(f,'numere.in');
08.assign(g,'numere.out');
09.reset(f);
10.rewrite(g);
11.readln(f,n);
12.m:=sqr(n);
13.for i:=1 to n do
14.        
for j:=1 to n do
15.                
if j=n then readln(f,a[i][j])
16.                        
else read(f,a[i][j]);
17.for i:=1 to m do b[i]:=0;
18.for i:=1 to n do
19.        
for j:=1 to n do
20.                
if a[i][j]>0 then b[a[i][j]]:=1;
21.min:=250000;
22.max:=0;
23.for i:=1 to m do
24.        
if b[i]<1 then
25.        
begin
26.        
if min>i then min:=i;
27.        
if max<i then max:=i;
28.        
end;
29.write(g,min,' ',max);
30.close(f);
31.close(g);
32.end.
as fi tare recunoscator daca m-ati putea ajuta. Va multumesc.

Editat de admin: Foloseste tagul "code" cand postezi surse.
« Ultima modificare: Martie 26, 2012, 18:24:14 de către Andrei Grigorean » Memorat
timi96
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #141 : Martie 29, 2012, 12:55:21 »

cica am memory limit depasit da ce are?
si cica depaseste timpu da nu inteleg numa sa citesc matricia aia si sa trec prin ea inca o data ia mai mult de 0.4 secunde?!?!?!?
Memorat
alexalbu95
Client obisnuit
**

Karma: -10
Deconectat Deconectat

Mesaje: 57



Vezi Profilul
« Răspunde #142 : Aprilie 02, 2012, 16:53:27 »

cica am memory limit depasit da ce are?
si cica depaseste timpu da nu inteleg numa sa citesc matricia aia si sa trec prin ea inca o data ia mai mult de 0.4 secunde?!?!?!?

Am vazut sursa ta si iti dau 4 indicii:

1. Nu ai neaparat nevoie de matrice.
2. De a[0] nu ai nevoie
3. Mai citeste o data problema si fii atent la un mic amanunt.
4. In cazul in care iei MLE incearca pe "char".
« Ultima modificare: Aprilie 02, 2012, 21:28:21 de către Albu Alexandru » Memorat
robertstreche
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 13



Vezi Profilul
« Răspunde #143 : Aprilie 17, 2013, 06:02:39 »

Citat
Incearca in loc de
Cod:
bool a[500004];
asta :
Cod:
bitset<1000001>a
Si trebuie inclus headerul <bitset>; .
imi poate explica si mie cineva ce face o astfel de secventa?
Memorat
veleandu
De-al casei
***

Karma: 155
Deconectat Deconectat

Mesaje: 132



Vezi Profilul
« Răspunde #144 : Aprilie 17, 2013, 07:40:11 »

Citat
imi poate explica si mie cineva ce face o astfel de secventa?

Pe scurt -> e o optimizare de memorie.
Background: Desi bool-ul tine doar 1 si 0, el in memorie ocupa tot un byte, la fel ca si char-ul.

Deci, nu e "chiar" asa de avantajos bool-ul.
Defapt, nu e deloc.

Acum .. ce face acel bitset.
E o structura de date, care iti permite cu niste functii sa iti ti practic un sir de bool-uri la o memorie de 8 ori mai mica.
Bitsetul chiar tine cate un bit pentru un bool, nu 8 ca si tipul de date "bool"

Ce ar trebui sa sti despre bitset ->
Cod:
#include<bitset>
using namespace std;
bitset<100> B;

int main(){
B.set( 10, 1 ); // seteaza a 10-a valoare cu 1
B.test( 10 ); // iti returneaza valoarea bitului 10

Mai multe gasesti aici -> http://www.cplusplus.com/reference/bitset/bitset/ -> iti recomand sa te uiti la exemple si sa citesti explicatiile pt mai multe lamuriri.

Daca vrei, poti sa iti "implementezi" un bitset si manual, dar ai nevoie de ceva cunostinte legate de operati pe biti.

Dar e mai greu, dar principiul e ca un char o sa iti tina 8 bool-uri
Pt fiecare bit, cate un bool
Practic
Cod:
A[x]
devine
Cod:
A[x/8] & ( 1<<( x%8 ) )
// Partea intreaga intra in A[] si restul iti spune bitul Very Happy
// ca sa afli daca bitul i e setat, faci x&(1<<i)
// daca returneaza ceva != 0, atunci e setat
// defapt poate returna 0 sau 1<<i .. dar asta nu conteaza prea mult

O sa iti fie mai greu sa modifici valorile.
Daca te intereseaza, pot sa completez ..
Dar nu mi se pare mai ok bitsetul, daca te obisnuiesti cu el
« Ultima modificare: Aprilie 17, 2013, 07:46:36 de către Alex Velea » Memorat
robertstreche
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 13



Vezi Profilul
« Răspunde #145 : Aprilie 17, 2013, 09:04:50 »

mersi mult pentru explicatii am folosit bitset-ul si am luat 100 pct  Yahoo!
Memorat
Johny_Depp22
Strain
*

Karma: 3
Deconectat Deconectat

Mesaje: 25



Vezi Profilul
« Răspunde #146 : Aprilie 17, 2013, 11:28:44 »

Problema asta mi-a dat si mie batai de cap la inceput din cauza memoriei. Dar apoi am rezolvat-o mai eficient, fara matrice si fara vectori, doar cu o mica observatie matematica.
Memorat
Sapientia
Strain
*

Karma: 0
Deconectat Deconectat

Mesaje: 29



Vezi Profilul
« Răspunde #147 : Ianuarie 25, 2014, 16:26:01 »

Am incercat sa rezolv cu memorie O(1).Imi intra doar 4 teste..pe celelalte iau incorect.Am observat ca trebuie sa fac "cast"pentru long long..ce inseamna x1LL?
Memorat
freak93
Echipa infoarena
Nu mai tace
*****

Karma: 342
Deconectat Deconectat

Mesaje: 819



Vezi Profilul
« Răspunde #148 : Ianuarie 25, 2014, 21:32:40 »

Cast la long long inseamna sa-ti transformi rezultatul din int (care merge pana la 2^31 - 1) in long long (2^63 - 1). Sunt mai multe feluri:

1) C style : b = (long long)a * c , acum a va f convertit in long long inainte sa fie inmultit cu c

2) C++ style: b = static_cast<long long>(a) * c, la fel ca mai sus

3) Trisand, un pic mai incet, s-ar putea sa te coste (foarte foarte rar) : b = 1LL * a * c, aici 1LL este defapt numarul 1 dar LL de dupa ne spune ca e long long in loc de int. 1LL * a returneaza un long long si nu un int, e chiar a doar ca e long long.
Memorat
vladandrei
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #149 : Aprilie 30, 2015, 12:55:41 »

Cod:
#include <iostream>
#include <fstream>
using namespace std;
ifstream  f("numere5.in");
ofstream  g ("numere5.out");
    bool x[500001];
    int i, el, maxx, minn = 0, n, j;

int main(){
    f >> n;
    for (i = 1; i <= n; i++){
        for (j = 1; j <= n; j++){
            f >> el;
            if (el <= 500000){
                x[el]=1;
             }
        }
    }
    if(n*n < 500000){
        for (i = 1; i <= n*n; i++){
            if (x[i] == 0 && minn == 0)
                minn = i;
            else if (x[i] == 0)
                maxx = i;
        }
    }
    else {
        for (i = 1; i <= 500000; i++){
            if (x[i] == 0 && minn == 0)
                minn = i;
            else if (x[i] == 0)
                maxx = i;
        }
    }
    g << minn << " " << maxx;
    f.close();
    g.close();

return 0;
}

Nu inteleg de ce la unele imi da incorect, la altele MLE.
Am incercat si fara sa folosesc vector, doar calculand suma elementelor de pe matrice, daca stiu cate nr imi lipsesc, ca sunt consecutive etc pot sa le aflu, dar la ultimele teste dadea WA.
Eu ma dau batut, habar n-am unde gresesc.
Memorat
Pagini: 1 ... 4 5 [6] 7   În sus
  Imprimă  
 
Schimbă forumul:  

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