Afişează mesaje
|
Pagini: [1] 2 3
|
2
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 258 Alpin
|
: Februarie 18, 2010, 11:08:40
|
Un exemplu: ai de citit un vector de numere (de maxim 5 cifre, să zicem) ... char buffer[NMAX * 6 + 1], tmp; gets(buffer); for( i = 0, nr = 0; i < n; ++i ) { sscanf(buffer, "%c", &tmp); if( tmp == ' ') ++nr; else a[nr] = a[nr] * 10 + tmp - '0'; } Unde a[NMAX] se presupune că e vectorul tău de int-uri, iniţializat cu 0. Dezavantajul e că aloci (foarte) multă memorie vectorului de char, o variantă ar fi un vector buffer de dimensiuni mai mici şi citirea pe bucăţi mai mici.
|
|
|
6
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 967 Char
|
: Februarie 15, 2010, 12:36:43
|
Am rezolvat, în sfârşit. Este extrem de neplăcut să stai să încerci să-ţi dai seama unde este diferenţa între comportamentul compilatoarelor, când la unul dintre ele nu ai acces decât indirect şi sursa ta rulează fără probleme pe al tău. Am citit ca string şi a mers.
Mulţumesc, Andrei, pentru cel mai competent răspuns. ( varianta ta nu mergea, dar diferenţa o făcea, într-adevăr, scanf-ul )
|
|
|
7
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 967 Char
|
: Februarie 15, 2010, 01:10:17
|
Deci e bătaie de joc. Sursa mea este okay şi totuşi ia seg fault de la input prost (am verificat. de multe ori!) Ce îmi răspunde uploaderul cu nonşalanţă? Buna.
Primesti segmentation fault cand faci stack overflow sau ceva de genul asta, cand intervine o eroare majora care opreste programul automat. Ai putea sa incerci sa faci debug pe testele oficiale sau sa te uiti pe solutia oficiala (cauta pe net).
Din pacate nu prea am timp sa ma uit pe cod acum ...
Deci primesc segmentation fault când fac stack overflow şi când intervine o eroare majoră care opreşte programul automat. Trecând peste explicaţia pueril-inexactă, răspunsul e ceva de genul te uzi pentru că plouă când eu întreb unde e gaura în acoperiş. Way to go! --- Job: http://infoarena.ro/job_detail/396369
|
|
|
9
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: Mesaje de eroare
|
: Februarie 13, 2010, 13:09:42
|
Ştiu ce sunt şi ce înseamnă semnalele, ştiu care pot fi cauzele. Problema era că nu înţeleg cauza directă ( = ce am putut greşi în cod). Sunt convins că este vorba de o scăpare stupidă, tocmai de aceea cerusem ajutorul cuiva care s-ar putea uita peste codul meu în căutare de gogomănii evidente. Îmi cer scuze, dar răspunsul tău mi se pare superfluu. O să încerc să rezolv singur.  LE: Am uitat să mulţumesc pentru răspunsul prompt. (fără ironie, bravos  )
|
|
|
19
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 607 Ordine
|
: August 26, 2008, 19:46:49
|
#include <stdio.h> #include <string.h>
int n,a[32],i,x,prev,k; char text[1000002];
int main(){ freopen("ordine.in","r",stdin); freopen("ordine.out","w",stdout); scanf("%s",text); for(i=0;i<strlen(text);++i){ ++a[text[i]-'a'+1];}
return 0; } doar citirea da tle pe ultimele 6 teste... (am bagat, de curiozitate, si un for 1, 2*26*nmax si a intrat in timp pe primele 4 teste) http://infoarena.ro/job_detail/204775le: am gasit gogomania facuta: for(i=0; i<strlen(text); ++i) am postat ca poate mai pateste cineva asa acum intra foarte bine cu O(26*n) http://infoarena.ro/job_detail/204786
|
|
|
|