Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 414 Apel : Februarie 08, 2017, 18:31:00
In testul 8 pe linia cu definirea celei de-a 5-a ecuatii ultimul caracter de pe rand este ';'(nu ar trebui sa existe alte caractere in afara de cele precizate in enunt), aparent asa au fost si testele la ONI...
2  Comunitate - feedback, proiecte si distractie / Feedback infoarena / Răspuns: Dezbatere: surse libere la toate problemele? : Noiembrie 16, 2016, 22:57:37
As dori sa imi exprim si eu parerea si sa aduc cateva argumente pro si contra.
Voi trata cele doua subiecte, testele si sursele separat.
Sursele:
Ideea de a oferi „Open Source” fiecarei probleme ma afecteaza in doua moduri (si intrucat sunt la un nivel mediu cand vorbim de programare, consider ca un procent „maricel” din utilizatorii infoarena activi vor avea aceeasi parere ca a mea, s-ar putea sa ma insel  ):
1.   Primul lucru care mi-a venit in minte cand am auzit despre aceasta dezbatere a fost „ ’ai de capu’ meu, tre’ sa invat sa ma controlez din a ma uita peste sursele altora daca nu-mi ies problemele!”, ceea ce mi se pare un lucru atat bun cat si rau. Pe plan psihic o sa duc in saptamanile imediat urmatoare acestui update o batalie cu mine insumi spre a ma controla. Dupa ce voi reusi sa extirp acest reflex foarte prost, o sa am parte de o experienta superba pe aceasta platforma, avand astfel acces la sursele unor probleme care imi dau batai de cap timp indelungat sau la unele smenuri care pur si simplu o persoana cu un nivel al intelectului modest nu le poate scoate din „joben”.
2.   Al doilea lucru m-a lovit in timp ce citeam toata aceasta dezbatere. Faptul ca exista posibilitatea ca unele persoane ar putea „plagia ” sursele altor utilizatori, mi se pare absolut fireasca. E in natura umana sa cautam sa castigam faima fara prea mult efort, pentru ca mereu vor exista persoane care nu realizeaza scopul adevarat al infoarenei, acela de pregatire al gandirii algoritmice, ci nu pregatire competitva. Acest lucru va fi realizat de putine persoane daca privim in ansamblu, dar suficient de multe incat sa poata modifica vizibil clasamentul arhivelor dupa numarul de probleme rezolvate, astfel acesta devenind un sistem perimat si incompatibil cu schimbarea produsa. Exista totusi cateva solutii la care m-am gandit (acest lucru nu are o mare importanta putand fi rezolvata prin diverse modalitati):
a.   S-ar putea desfiinta acest clasament si ne-am putea vedea linistiti de viata fara a avea un mod clar de a ne compara cu alte persoane.
b.   Acest clasament ar putea ramane ca un remanent al istoriei infoarenei si s-ar putea indrepta atentia spre alte moduri de a compara utilizatorii, cum ar fi rating-ul si pagina de statistici a problemelor.
Clar vor exista unele persoane care nu vor reusii sa isi stapaneasca urgia de a se uita peste sursele altora, sau care vor fi prea interesati de a urca in clasament intrucat vor uita de ce se afla aici. Acestia sunt impartiti in 2 categorii pe care @alexpetrescu le-a enuntat anterior (Categoriile II si III). Acest lucru este inevitabil totusi daca vorbim despre „democratie”, care urmareste interesele majoritatii.
Personal, vad aceasta schimbare ca pe  o oprotunitate de a schimba si mentalitatea tuturor, in special a nou-venitilor, intrucat se va realiza in sfarsit ca nu se poate ajunge la performanta fara munca.
Off topic: Exista acea regula a celor 10 mii de ore ca sa devii profesionist intr-un domeniu, consider ca aici se poate aplica, de asemenea in fiecare sesiune de programare 1-2 ore trebuie atribuite auto-educarii, fie ele spre a ne controla „pofta” de a accesa alte surse, fie de descoperire a noi abordari a problemelor sau de organizare a modului in care codam.
Testele:
Aici nu am prea multe de spus, mi se pare o idee foarte buna care nu va schimba foarte mult soarta platformei. Va fi o modalitate prin care vom putea vedea mai repede ca am facut o comparare si am uitat sa punem „>=” in loc de „>”, sau ca am uitat sa punem un „+1” dubios pe undeva.
Consider ca este practic imposibil sa ne dam seama de solutia unei probleme dupa vizualizarea testelor, intrucat mare parte din ele sunt generate aleator, cel mult vor fi rezolvate unele bug-uri care ne vor aduce de la 80-90 la 100 de puncte. Adeseori aceste bug-uri unora le poate „manca” foarte mult timp din pregatirea la informatica.

In final pot spune ca posibilitatea de a accesa testele va fi cu siguranta o schimbare in bine, pe cand oferirea pe tava a solutiei oricarei probleme va avea o perioada de inceput cel mai probabil daunatoare in care utilizatorii vor fi triati in functie de seriozitatea fiecaruia, dar dupa aceea se va ajunge la o crestere a numarului de olimpici la informatica, acest lucru depinzand strict de mentalitatea fiecaruia.
Sper ca nu am suparat pe nimeni si ca nu am repetat idei deja discutate anterior, si sper ca aceasta schimbare sa aduca un beneficiu acestei comunitati.

3  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 459 Order 2 : Martie 01, 2016, 15:19:46
Imi poate spune cineva cum trebuie rezolvata problema? Adica... rezolvata pentru mai putin de 2N+1 operatii.
Pentru 2N+1 operatii am rezolvat-o si nu stiu cum altfel sa o abordez.
Help!
Aici este codul meu:

#include <iostream>
#include <fstream>

using namespace std;

ifstream in("order2.in");
ofstream out ("order2.out");

int N,sort[2002],arr[2002];

int part(int *arr,int start,int end)
{
   int index=start,piv=arr[end],t;
   for(int i=start;i<=end;i++)
      if(arr<=piv)
      {
         t=arr;
         arr=arr[index];
         arr[index]=t;
         index++;
      }
      index--;
   return index;
}
void Qsort(int *arr,int start,int end)
{
   int index;
   if (start<end)
   {
      index=part(arr,start,end);
      Qsort(arr,start,index-1);
      Qsort(arr,index+1,end);
   }
}
void Read()
{
   in>>N;
   for(int i=1;i<=N;i++)
   {
      in>>arr;
      sort=arr;
   }
   Qsort(sort,1,N);
}
int find(int n,int *arr,int start,int end)
{
   int pos;
   for(int i=start;i<=end;i++)
      if(arr==n)
      {
         pos=i;
         break;
      }
   return pos;
}
void Reverse(int *arr,int pos)
{
   int t;
   for(int i=1;i<=pos/2;i++)
   {
      t=arr;
      arr=arr[pos-i];
      arr[pos-i]=t;
   }
   for(int i=pos+1;i<=N-(N-pos)/2;i++)
   {
      t=arr;
      arr=arr[N+1-i+pos];
      arr[N+1-i+pos]=t;
   }
   out<<pos<<'\n';
}
bool checkforpos(int sortpos,int arrpos)
{
   int val=false;
   if(arr[arrpos-1]==sort[sortpos-1])
      val=true;
   return val;
}
void Bringforward(int pos)
{
   int posarr=find(sort[pos],arr,1,N);
   if(!checkforpos(pos,posarr))
   {
      Reverse(arr,posarr);
      Reverse(arr,posarr+1);
   }
}
int main()
{
   Read();
   for(int i=1;i<=N;i++)
      Bringforward(i);
   if(arr[1]==sort[N])
      Reverse(arr,N+1);
   return 0;
}
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines