Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1093 Palalila2 : Martie 09, 2011, 19:46:53
Dar am vazut codul tau si nu vad cele 3 while-uri in total. Daca vrei da-mi un P.M. si iti dau sursa.

codul sursa cu cele trei while-uri?nu il vreau pentru ca l-am facut sa mearga pana la urma doar ca nu am postat problema pe forum
si am incercat si solutia mea cea veche(pentru exemplul:"nostressATfmi" da 7,deci e bine) dar iau 0 puncte.
2  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1093 Palalila2 : Martie 09, 2011, 18:33:08
ba am facut si cum mi-ai zis tu si a mers problema (nu am mai postat-o pe forum)...si mi-am continuat si ideea mea imbunatatita ,cred eu...dar nu vad unde e gresala in cod ,ca iau 0 puncte
3  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1093 Palalila2 : Martie 08, 2011, 19:52:58
pana la urma am facut o varianta a mea care merge pentru exemplul dat la problema:nostressATfmi ,dar cand o postez pe infoarena imi afiseaza incorect la toate testele...imi puteti spune ce gresala am facut in cod sau macar un sir mai mare pe care pot sa testez raspunsul.

Cod:
#include <stdio.h>
#include <string.h>


int main()
{
    int j=2,i=1,nr=1;
    char s[500000];
    FILE *poz,*pozout;
    poz=fopen("palalila2.in","r");
    fgets(s,sizeof(s),poz);
    while (s[i]!='\0')
    {
        if (s[i-1]>s[j])
        {
            if (s[i]>s[j])
            {
                i=j+1;
                j=i+1;
                nr+=2;
            }
            else
            {
                ++j;
                if (j==strlen(s))
                {
                    ++i;
                    j=i+1;
                }
            }
        }
        else
        {
            ++i;
            j=i+1;
        }
    }
    fclose(poz);
    pozout=fopen("palalila2.out","w");
    fprintf (pozout,"%d",nr);
    fclose(pozout);
    return 0;
}


4  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1093 Palalila2 : Februarie 28, 2011, 16:44:26
da,se pare ca merge,inca nu am inteles algoritimul dar credeti ca o sa mearga si pentru un sir de 640 kB?
5  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1093 Palalila2 : Februarie 27, 2011, 20:08:12
n-am inteles ,am pus un cod dar imi da 36 si ar trebui sa-mi dea 7

Cod:
#include <stdio.h>

int main()
{
        char t[13]="nostressATfmi";
        int i=0,j=0,N=13,sol=0;
        while (i+1<N)
        {

            while ((t[j] >= t[j+1]) && (j + 1 < N))
            {
                ++j;
                ++sol;

            }
            j=0;
            while ((t[j] <= t[j + 1]) && (j + 1 < N))
            {
                ++j;
                ++sol;
            }
            j=0;
            ++i;
        }
        printf("%d",sol);
        getch();
        return 0;
}



si pe langa asta mai trebuie ca acest cod sa se termine in maxim 0,5 sec cu sirul de 640 kb...cum fac asta?
6  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1093 Palalila2 : Februarie 27, 2011, 14:44:43
1. Se parcurge sirul atata timp cat V[ i ] >= V[i + 1] && i + 1 < N
2. Se parcurge sirul atata timp cat V[ i ] <= V[i + 1] && i + 1 < N
3. Se reia pasul 1

Solutia se incrementeaza la sfarsitul pasului 1 si la inceputul pasului 2, dar la inceputul pasului 2 se incrementeaza doar daca i + 1 < N .

se reia pasul 1 pana cand?
7  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1093 Palalila2 : Februarie 22, 2011, 10:01:25


1. Se parcurge sirul pana cand V[ i ] >= V[ i + 1 ] sau se termina.
2. Se parcurge sirul pana cand V[ i ] <= V[ i + 1 ] sau se termina.
3. Se revine la 1.

Solutia se incrementeaza la pasii 1 si 2.
Cand se termina sirul, se afiseaza solutia.



n-am inteles solutia lui Spatarel
parcurgem sirul intr-un while mare care contine alte 2 while-uri (adica cele de la punctul 1 si 2,cu conditiile impuse) ?
8  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1093 Palalila2 : Februarie 15, 2011, 17:39:15
la ce metoda te referi?
9  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1093 Palalila2 : Februarie 15, 2011, 13:56:07
imi puteti da un sfat prin care sa reduc timpul programului meu?
peste 2 kb dureaza foarte mult si acolo timp de executie pe test  e de doar 0.5 sec

sau daca pot sa vad un cod sursa care a luat maxim la ac problema


@Spatarel Dan Constantin o sa incerc si ideea ta
10  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1093 Palalila2 : Februarie 14, 2011, 15:56:09
folosesc c,nu c++
11  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1093 Palalila2 : Februarie 14, 2011, 15:21:18
imi puteti spune ce trebuie sa folosesc  pentru a putea avea siruri cu  lungimea de 500000 de caractere?
12  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1093 Palalila2 : Februarie 14, 2011, 13:30:02
da,asta  era,mersi
13  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1093 Palalila2 : Februarie 14, 2011, 13:13:02
imi puteti spune si mie  ce trebuie sa pun aici pentru a nu mai primi warning-ul asta?
Citat
Compilare:
user.c:43:2: warning: no newline at end of file
si asta e codul sursa:
Cod:
#include <stdio.h>
#include <string.h>
#include <ctype.h>


int main()
{
FILE *poz,*afisare;
char S[100];
int i=1,j=2,nr=1,max=0;
poz=fopen("palalila2.in","r");
if (poz==NULL)
printf("eroare");
else
{
fgets(S,sizeof(S),poz);
while (S[i]!='\0')
{
if ((S[i-1]<S[i]) && (S[i]>S[j]))
{
nr+=2;
i+=2;
j+=2;
}
else
{
++j;
}
if (j==strlen(S))
{
if (nr>max)
max=nr;
++i;
j=i+1;
}

}
}
afisare=fopen("palalila2.out","w");
fprintf(afisare,"%d",max);
fputs("\n\n",afisare);
return 0;
}


14  infoarena - concursuri, probleme, evaluator, articole / Informatica / [C]intrebari pointeri : Decembrie 18, 2010, 18:06:09
Buna ziua! am sa postez aici nelamuririle mele legate de pointeri ...

1)pana acum stiu(am vazut Very Happy)  cum pot sa aloc memorie pentru un sir de numere intregi...dar daca vreau sa citesc de la tastatura un sir de caractere(un text),cum as putea face?(adica sa il citesc pe tot odata,nu litere cu litera ,cum ar fii la vectori)
eu m-am gandit la asa ceva :

Cod:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char s[10],*p;
    int i;
    fgets(s,10,stdin);
    printf("%c",s[4]);
    p=(char*)malloc(sizeof(char));
    for (i=strlen(s);i<10;++i)
    {
        p=(char*)realloc(p,(i+1)*sizeof(char));
        free(p+i);
    }


}
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines