Pagini: 1 [2]   În jos
  Imprimă  
Ajutor Subiect: 211 Spirala  (Citit de 7866 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
eddy13579
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #25 : Mai 01, 2012, 17:26:11 »

Imi explica cineva va rog de ce iau 60 pct. pe varianta asta  Brick wall Am "Inccorect" pe 4 teste  Think

Cod:
#include <iostream>
#include <fstream>
using namespace std;
int a[100][100], a2[100][100],v[10001];
int main()
{
ifstream g("spirala.in");
ofstream h("spirala.out");
int n, m, x=1, r,ind=1;
g>>n;
g>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
g>>a[i][j];
r=a[1][2]-a[1][1];
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])
{v[x]=a[l][i];x++; a2[l][i]=1;}}
for(int j=2+k;j<=n-k;j++) {int l=m-k; if(!a2[j][l])
{v[x]=a[j][l];x++; a2[j][l]=1;}}
for(int i=m-1-k;i>=1+k;i--) {int l=n-k; if(!a2[l][i])
{v[x]=a[l][i];x++; a2[l][i]=1;}}
for(int j=n-1-k;j>=2+k;j--) {int l=k+1; if(!a2[j][l])
{v[x]=a[j][l];x++; a2[j][l]=1;}}
}
x--;
for(int i=1;i<x;i++)
if(v[i]+r!=v[i+1]){ ind=0; h<<"NU\n"<<v[i]<<" "<<v[i+1];break;}
if (ind) h<<"DA\n"<<v[x];
return 0;
}

Editat de admin: Foloseste tagul "code" cand postezi surse.
« Ultima modificare: Mai 05, 2012, 13:42:56 de către Andrei Grigorean » Memorat
catalincraciun
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 7



Vezi Profilul
« Răspunde #26 : Mai 09, 2013, 22:01:59 »

Rog staff-ul Infoarena sa revizuiasca testele acestei probleme, mai ales testele 5 si 9, am incercat cu 5 surse diferote scrise de 3 oameni diferiti (dat fiind si numarul de subsimisi facute) si toate au picat testele 5 si 9...
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #27 : Mai 09, 2013, 22:48:17 »

Am reevaluat ultima sursa care a luat 100 de puncte, precum si sursa unui admin care a luat 100 de puncte in trecut. Ambele continua sa ia 100 de puncte.

Incearca sa gasesti oameni mai priceputi. Wink
Memorat

Am zis Mr. Green
catalincraciun
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 7



Vezi Profilul
« Răspunde #28 : Mai 10, 2013, 15:47:46 »


[Cine are timp si chef] Imi puteti spune ce gresesc la sursa asta? ma uit de trei zile pe ea si am trstat-o in toate conditiile, pe numere mici, pe limite, cu teste random, cu teste "ne-random" si totusi nu merge... am cautat si pe net parcurgerea in spirala caci este o problema comuna, sursele de acolo nu luau mai mult de 70 de puncte... orice as face imi pica testele 5 si 9... Angry Think

Cod:
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("spirala.in");
ofstream g("spirala.out");
 
int n,m;
long C[100001];
int c=1;
long A[1500][1500];
bool checked[101][101]; /// In cazul in care elementele au fost parcurese, acestea nu vor mai fi adaugate in vectorul C
long a,b; /// Elementele care nu indeplinesc progresia
 
bool Verificare(){
 
    bool ok=1;
    long dif;
 
    dif=C[2]-C[1];
    for (int i=3;i<c && ok;i++)
        if (C[i]-C[i-1]!=dif){
            ok=0;
            a=C[i];
            b=C[i-1];
        }
 
    return ok;
}
 
void Matrice (short int x1,short int y1,short int x2,short int y2){
 
    while (x1<=x2+1 && y1<=y2+1){
 
        for (short int i=y1;i<=y2;i++){
            if (!checked[x1][i]){
                C[c]=A[x1][i];
                c++;
                checked[x1][i]=1;
            }
        }
        for (short int i=x1+1;i<x2;i++){
            if (!checked[i][y2]){
                C[c]=A[i][y2];
                c++;
                checked[i][y2]=1;
            }
        }
        for (short int i=y2;i>=y1;i--){
            if (!checked[x2][i]){
                C[c]=A[x2][i];
                c++;
                checked[x2][i]=1;
            }
        }
        for (short int i=x2-1;i>x1;i--){
            if (!checked[i][y1]){
                C[c]=A[i][y1];
                c++;
                checked[i][y1]=1;
            }
        }
 
        x1++;
        y1++;
        x2--;
        y2--;
    }
}
 
int main(){
 
    f>>n>>m;
    for (short int i=1;i<=n;i++)
        for (short int j=1;j<=m;j++)
            f>>A[i][j];
    f.close();
 
    Matrice(1,1,n,m);
 
    if (Verificare()){
        g<<"DA\n";
        g<<C[c-1];
    }
    else{
        g<<"NU\n";
        g<<a<<"\n"<<b;
    }
 
    for (int i=1;i<c;i++)
        cout<<C[i]<<endl;
 
    g.close();
 
    return 0;
}
Memorat
alevasluiale
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 5



Vezi Profilul
« Răspunde #29 : Martie 12, 2014, 21:06:30 »

Salut!
Imi poate da cineva un hint la testul 2?
La problema am luat 90 din prima iar cel mai mare timp de rulare,inafara de cel de la testul 2 e 4 ms.
Uitati sursa.
http://www.infoarena.ro/job_detail/1141403?action=view-source

Multumesc anticipat!

LE: Am facut-o, uitasem de niste break-uri.
« Ultima modificare: Martie 13, 2014, 15:39:41 de către Huhurez Marius » Memorat
vyrtus
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #30 : Mai 30, 2014, 10:30:20 »

Salut la toti.
 Ce trebuie sa afisezi in cazul cind progresia aritmetica dintre primele doua elemente este egal cu 0, mergi mai departe sau afisezi NU?
Memorat
Pagini: 1 [2]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines