Afişează mesaje
|
Pagini: 1 2 [3] 4 5
|
51
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Totul pare OK!
|
: Noiembrie 14, 2009, 20:29:31
|
Salut! De ce obtin numai 75 de puncte pe problema aceasta : http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=971? #include <cstdio> #include <algorithm> #include <cmath> using namespace std; const int maxn = 120000; const int INF = 1000000001; double X[maxn],Y[maxn]; //long double V[maxn]; int PI,IND[maxn],N,ST[maxn]; bool cmpf(int i,int j) { return (double)(X[i] - X[PI]) * (Y[j] - Y[PI]) < (double)(X[j] - X[PI]) * (Y[i] - Y[PI]); } long double semn(int i1,int i2,int i3) { return (long double)X[i1] * Y[i2] + X[i2] * Y[i3] + X[i3] * Y[i1] - Y[i1] * X[i2] - Y[i2] * X[i3] - Y[i3] * X[i1]; } int main() { freopen("cetati.in","r",stdin); freopen("cetati.out","w",stdout); scanf("%d\n",&N); X[0] = INF;Y[0] = INF; int punct_initial = 0; for(int i = 1;i <= N; ++i) { scanf("%lf %lf",&X[i],&Y[i]); if (X[i] < X[punct_initial] || (X[i] == X[punct_initial] && Y[i] < Y[punct_initial])) punct_initial = i; } PI = punct_initial; for(int i = 1;i <= N; ++i) { if (i == punct_initial) continue; IND[++IND[0]] = i; } sort(IND + 1,IND + IND[0] + 1,cmpf); ST[ST[0] = 1] = punct_initial; for(int i = 1;i <= IND[0]; ++i) { if (IND[i] == punct_initial) continue; while(ST[0] >= 2 && semn(ST[ST[0] - 1],ST[ST[0]],IND[i]) > 0) --ST[0]; ST[++ST[0]] = IND[i]; } ST[++ST[0]] = punct_initial; printf("%d\n",N - (int)(ST[0]-1)); /*reverse(ST + 1, ST + ST[0] + 1); for(int i = 1;i < ST[0]; ++i) { printf("%lf %lf\n",X[ST[i]],Y[ST[i]]); }*/ return 0; }
|
|
|
53
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: ASM
|
: Septembrie 15, 2009, 19:38:43
|
Exact, tocmai din cauza aceasta eram interesat sa aflu daca pot folosi asm la olimpiada! Poate ca nu l-as fi folosit pentru a scrie in intregime programul, insa cu siguranta as fi scris anumie funcii cum ar fi de exemplu functiile de ciclare, unde de regula se pierde cel mai mult timp (for-uri imbricate).
|
|
|
64
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Parcurgere matrice in spirala
|
: August 10, 2009, 15:13:31
|
Salut! Uite aici codul! Il mai optimizezi tu daca e ceva, ca eu l-am scris in graba! Succces! #include <iostream> #include <conio.h>
using namespace std;
int a[100][100], a2[100][100]; int n, m;
int main(){ cout<<"n:";cin>>n; cout<<"m:";cin>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){ cout<<"a["<<i<<"]["<<j<<"]:"; cin>>a[i][j]; }
for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++) cout<<a[i][j]<<" "; cout<<endl; } cout<<endl;
for(int k=0;k<=(n*m)/2;k++){ for(int i=1+k;i<=m-k;i++) {int l=k+1; if(!a2[l][i]) cout<<a[l][i]<<" ", a2[l][i]=1;} for(int j=2+k;j<=n-k;j++) {int l=m-k; if(!a2[j][l]) cout<<a[j][l]<<" ", a2[j][l]=1;} for(int i=m-1-k;i>=1+k;i--) {int l=n-k; if(!a2[l][i]) cout<<a[l][i]<<" ", a2[l][i]=1;} for(int j=n-1-k;j>=2+k;j--) {int l=k+1; if(!a2[j][l]) cout<<a[j][l]<<" ", a2[j][l]=1;} } getch(); return 0; }
|
|
|
68
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Evaluator Windows
|
: Aprilie 24, 2009, 21:35:08
|
Salut! Am inceput sa scriu la un evaluator, de 3 zile, ce va functiona pe windows, scris in mingw. Momentat nu pot spune ca evaluatorul functioneaza excelent sau ca este un evaluator complet! Pana acum merge bine in stagiul in care se afla! Cine este interesat si vrea sa lucreze alaturi de mine pentru a dezvolta in continuare evaluatorul, poate sa imi zica si va primi sursa! Comanda de evaluare este : evaluator numeproblema.exe In folderul suport se afla un fisier config.ini! In acel fisier se afla date despre problema ce va fi evaluata! nume={numele fisierului de test}; tip={momentat nu functioneaza} teste={numarul de teste} punctaj={punctajul acordat fiecarui test evaluat corect} time={timpul maxim acordat problemei pentru a rezolva testul} Momentat evaluatorul nu e capabil sa genereze decat teste de formatul nrTest-numeTest Am atasat aici evaluatorul! Modificati extensia fisierului din txt in ace! Succes!
|
|
|
|