infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Andrei Grigorean din Decembrie 14, 2008, 14:32:10



Titlul: 778 Tablete
Scris de: Andrei Grigorean din Decembrie 14, 2008, 14:32:10
Aici puteti discuta despre problema Tablete (http://infoarena.ro/problema/tablete).


Titlul: Răspuns: 778 Tablete
Scris de: Glodeanu Ioan Daniel din Decembrie 14, 2008, 22:02:54
Test     Timp executie     Memorie folosita     Mesaj    Punctaj/test
1   0ms   12kb   OK   10
2   4ms   8kb   OK   10
3   4ms   8kb   OK   10
4   96ms   1808kb   OK   10
5   524ms   4972kb   Time limit exceeded.   0
6   4ms   488kb   OK   10
7   124ms   2196kb   OK   10
8   328ms   3428kb   OK   10
9   480ms   4972kb   Time limit exceeded.   0
10   584ms   4968kb   Time limit exceeded.   0
Punctaj total   70

De ce da imi da TLE pe testul 9 daca se incadreaza in timp? :|


Titlul: Răspuns: 778 Tablete
Scris de: Cezar Mocan din Decembrie 14, 2008, 22:07:22
S-a mai discutat, timpii afisati in monitor nu sunt exacti. Poti sa ai incredere in evaluator, iti calculeaza bine timpul de executie. Incearca sa mai optimizezi. Altora le-a intrat fara probleme.


Titlul: Răspuns: 778 Tablete
Scris de: Glodeanu Ioan Daniel din Decembrie 15, 2008, 00:12:56
S-a mai discutat, timpii afisati in monitor nu sunt exacti. Poti sa ai incredere in evaluator, iti calculeaza bine timpul de executie. Incearca sa mai optimizezi. Altora le-a intrat fara probleme.

Merci pentru lamurire... :)


Titlul: Răspuns: 778 Tablete
Scris de: alexandru andronache din Decembrie 15, 2008, 20:58:21
Stiu ca nu puteti sa-mi dati testele dar mi-ati putea da macar un indiciu la ce gresesc in rezolvarea asta #232607? Toate testele facute de mine dau solutii corecte... ](*,)


Titlul: Răspuns: 778 Tablete
Scris de: Rus Cristian din Decembrie 15, 2008, 21:05:14
mai incearca problema, nu e grea, nu intreba rapid pe forum ce nu iti iese :thumbup:


Titlul: Răspuns: 778 Tablete
Scris de: Stefan Istrate din Decembrie 15, 2008, 21:17:24
M-am uitat pe solutia ta si pentru unele teste afisezi si numere mai mari decat N * N, nu doar intre 1 si N * N. Da-ti mai multe teste mici sa te convingi. :)


Titlul: Răspuns: 778 Tablete
Scris de: gaboru corupt din Decembrie 16, 2008, 00:48:56
coloana k trebuie sa aiba de asemenea elementele in ordine crescatoare?... ???


Titlul: Răspuns: 778 Tablete
Scris de: Stefan Istrate din Decembrie 16, 2008, 02:21:11
Nu


Titlul: Răspuns: 778 Tablete
Scris de: Patcas Csaba din Decembrie 16, 2008, 12:46:21
S-a mai discutat, timpii afisati in monitor nu sunt exacti. Poti sa ai incredere in evaluator, iti calculeaza bine timpul de executie. Incearca sa mai optimizezi. Altora le-a intrat fara probleme.

De fapt, toti cei care au facut in Pascal, au luat 70... (din ce am vazut pana acuma). Motivul este, ca scrierea in fisier merge muuult mai lent in Pascal, am reusit sa rezolv problema de 100 in Pascal folosind buffer la scriere (si nemodificand altceva).


Titlul: Răspuns: 778 Tablete
Scris de: Feier Vlad din Decembrie 16, 2008, 18:44:06
S-a mai discutat, timpii afisati in monitor nu sunt exacti. Poti sa ai incredere in evaluator, iti calculeaza bine timpul de executie. Incearca sa mai optimizezi. Altora le-a intrat fara probleme.
Pai nu e facut cu timer de mare acuratete (Performance Counter)? :-k


Titlul: Răspuns: 778 Tablete
Scris de: Bogdan-Cristian Tataroiu din Decembrie 16, 2008, 18:55:06
In primul rand evaluarea e sub linux.

Programului ii este masurat exact timpul in care foloseste procesorul, in monitor doar sunt afisati cu erori de cateva milisecunde. De asemenea, programul este oprit imediat ce depaseste timpul de executie, nu se asteapta sa termine executia.


Titlul: Răspuns: 778 Tablete
Scris de: alexandru din Ianuarie 04, 2009, 18:44:29
Ma  poate  ajuta cineva?  Am vazut  solutia  oficiala  dar  vreau sa  o rezolv singur, sa  zic, dar  tot trec de  limita  de  timp  ](*,):
Eu  m-am  gandit la  urmatoarea  rezolvare:
Pun  pe  coloana   k   un  elemnt  par  a.i    sa  pot  pune  elemtele   de la  k-1......1 daca  nu  se  poate  trec la  urmatorul element  par  si verific daca  pot
Ca sa  nu folosesc de  2  ori  acelasi  nr   folosesc vectorul  uz cu semnificatia  uz[ i ]=0  nefolosit  uz[ i ]=1  folosit.
Si  la  afisarea  afisez  matricea  pana  la k  apoi afisez  numerele  ramase  care vor fi  >de cat cele puse  in  partea  opusa
Aici   gasiti  implementarea:
Cod:
#include<stdio.h>
#define InFile "tablete.in"
#define OutFile "tablete.out"
#define Nmax 1000
FILE *fin=freopen(InFile,"r",stdin),*fout=freopen(OutFile,"w",stdout);
long  a[Nmax+1][Nmax+1];
int   n,K,uz[Nmax*Nmax+2];
void Tablete(int i)
   {if(i==n+1) return;
    int ok=1;
    long nr=i*K%2==0?i*K:i*K+1,lg=0,j,v[Nmax+1],nr2;
    do
     {if(!ok)
        {nr+=2; for(j=1;j<=lg;j++) uz[v[i]]=0;}
      ok=1;
      if(uz[nr]) while(uz[nr]&&nr<=n*n) nr+=2;
      a[i][K]=nr; uz[nr]=1; v[++lg]=nr;
      for(j=K-1;j>=1&&ok;j--)
         {nr2=a[i][j+1]-1;
          if(uz[nr2]) while(uz[nr2]&&nr2>=1) nr2--;
          if(nr2<=1&&j>1) ok=0;
            else {a[i][j]=nr2; uz[nr2]=1; v[++lg]=nr2;}
         }
     }while(!ok);
    Tablete(i+1);
   }
int main()
  {long i,j,nr;
   scanf("%d %d",&n,&K);
   fclose(fin);
   Tablete(1);
   for(i=1;i<=n;i++)
      {nr=n-K;
       for(j=1;j<=K;j++) printf("%ld ",a[i][j]);
           for(j=a[i][K];j<=n*n&&nr;j++)
              if(!uz[j]) {printf("%ld ",j); uz[j]=1; nr--;}
       printf("\n");
      }
   fclose(fout);
  }
[Editat de admin] aveti grija sa se vada textu calumea cand postati. [i ] (fara spatiu) inseamna italic pe forum, puneti spatii...


Titlul: Răspuns: 778 Tablete
Scris de: Codrin LACHE din Martie 12, 2009, 14:36:25
iau doar 50/100 dar nu inteleg unde gresesc  :readthis: :readthis: :fighting: :fighting:


gata :banana: :banana: \:D/ \:D/

[editat] ne bucuram pentru tine, dar nu mai posta consecutiv. Foloseste optiunea "modifica"


Titlul: Răspuns: 778 Tablete
Scris de: Andrici Cezar din Martie 25, 2009, 14:06:48
am citit articolul despre aceasta problema,dar tot nu inteleg tabelul pentru k par si n impar/par


Titlul: Răspuns: 778 Tablete
Scris de: A Cosmina - vechi din Iulie 24, 2009, 18:23:10
am citit articolul despre aceasta problema,dar tot nu inteleg tabelul pentru k par si n impar/par

Aceeasi problema o am si eu.  :sad:

Nu-mi dau seama care parte trebuie completata si nici cu ce.

a11  a12  a13  a14
a21  a22  a23  a24
a31  a32  a33  a34
a41  a42  a43  a44

Ar putea cineva sa-mi boldeze partea care se completeaza dupa reguli si sa-mi explice cum ? Din tabel nu inteleg ...  :?


Titlul: Răspuns: 778 Tablete
Scris de: speedzeal din Iulie 24, 2009, 19:30:36
am citit articolul despre aceasta problema,dar tot nu inteleg tabelul pentru k par si n impar/par
Ar putea cineva sa-mi boldeze partea care se completeaza dupa reguli si sa-mi explice cum ? Din tabel nu inteleg ...  :?
Daca completezi matricea de genu:
pt n
1 2 3 ...  n
.
.
.
n^2-(n-1) ... n^2.
Ce schimbari poti sa ii faci ca sa respecte conditiile din enunt?(am descoperit singur solutia asta si nu e cu formule)


Titlul: Răspuns: 778 Tablete
Scris de: Antoche Ioana Alexandra din Septembrie 15, 2009, 20:29:35
Cat trebuie sa dea o sursa de 100 pct pt k=1 sau pt n impar si k=n?
Trebuie sa fie doar coloana k para sau pot sa am mai multe coloane pare (inclusiv k)?


Titlul: Răspuns: 778 Tablete
Scris de: Andrei Grigorean din Septembrie 15, 2009, 20:52:31
Exista solutie pentru cazurile precizate de tine si poti avea mai multe coloane pare.


Titlul: Răspuns: 778 Tablete
Scris de: Antoche Ioana Alexandra din Septembrie 15, 2009, 20:53:47
ok, multumesc!  :)

LE: dak pe fiecare linie treb sa am a (i,j)<a(i,j+1) si k=1, avand in vedere ca numerele nu se repeta si trebuie sa le folosesc pe toate de la 1 la n^2, atunci cum il folosesc pe 1? 1 e minim!
De asemenea, dak am n impar n*n=impar. elementele fiind in ordine crescatoare n*n=max in acelasi timp nu il pot avea pe ultima poz (unde se presupune ca e un elem par).


Titlul: Răspuns: 778 Tablete
Scris de: Andrei Grigorean din Septembrie 15, 2009, 23:25:20
Se pare ca m-am grabit si am spus prostii.

Nu exista solutie pentru K = 1, si nici pentru K = N cand N este impar.