• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Niekolejne SPOJ

0 głosów
988 wizyt
pytanie zadane 27 kwietnia 2017 w SPOJ przez BinaryMan Stary wyjadacz (12,620 p.)
edycja 27 kwietnia 2017 przez BinaryMan

Witam !
Niestety, wiem że tak nie wypada, ale jestem zmuszony wrzucić tutaj cały kod, gdyż moim zdanie działa on dobrze, a sędzia go nie akceptuje i nie wiem gdzie jest błąd. 

 

#include <iostream>

using namespace std;

long int n;


int main()
{
    //cout << "Podaj liczbe: " << endl;
    //for(int n=999999; n<=1000000; n++)
    //{
    cin>>n;
    if(n>=0 && n<=1000000)
    if(n==2 || n==3 || n==1)
    {
        cout<<"NIE"<<endl;
    }

else
{
    long int *tablica;
    tablica=new long int [n+1];

    for(long int i=n; i>=0; i--)
    {
        tablica[i]=i;
    }


    long int polowa=0;

    polowa=(n/2);


    long int bufor=0;

    for(long int y=0; y<polowa; y+=2)
    {
    bufor=tablica[y];
    tablica[y]=tablica[n-1-y];
    tablica[n-1-y]=bufor;
    }

    bufor=0;

    bufor = tablica[n];
    tablica[n] = tablica[polowa];
    tablica[polowa] = bufor;


        for(long int i=n; i>=0; i--)
    {
        cout<<tablica[i]<<" ";
    }

    //PETLA SPRAWDZAJACA CZY KOLEJNY INDEX W TABLICY NIE JEST O 1 WIEKSZY
/*
    long int OK=0;

for(long int z=0; z<n; z++)
{
    if(tablica[z]+1 == tablica[z+1] || tablica[z]-1 == tablica[z+1])
    {
        OK=1;
    }

}
    if(OK==1)
    cout<<"OK"<<endl;
}
*/
    //}
}
    return 0;
}

http://pl.spoj.com/problems/NIEKOLEJ/

komentarz 27 kwietnia 2017 przez Dexterim Dyskutant (8,370 p.)
Cos czuje, że jak nie dasz linku do zadania to nikt Ci nie pomoże ;)
komentarz 27 kwietnia 2017 przez BinaryMan Stary wyjadacz (12,620 p.)
jest i link, zapomniałem :D
1
komentarz 27 kwietnia 2017 przez vector Dyskutant (9,200 p.)
Dla n = 3 istnieje ciąg 2 0 3 1
komentarz 28 kwietnia 2017 przez BinaryMan Stary wyjadacz (12,620 p.)

Dałem if-a dla 3

        if(n==3)
    {
        cout<<"2 0 1 3 "<<endl;
    }

I nie działa, jest ciągle że błędna odp

1 odpowiedź

0 głosów
odpowiedź 28 kwietnia 2017 przez BinaryMan Stary wyjadacz (12,620 p.)

Teraz kod wygląda tak, a SPOJ pokazuje przekroczono limit czasu:
 

#include <iostream>

using namespace std;

long int n;


int main()
{
    //cout << "Podaj liczbe: " << endl;
    //for(int n=999999; n<=1000000; n++)
    //{
    cin>>n;
    if(n>=0 && n<=1000000)

        if(n==1 || n==2)
        {
            cout<<"NIE"<<endl;
        }
        else

            if(n==3)
            {
                cout<<"2 0 1 3 "<<endl;
            }

            else
            {
                long int *tablica;
                tablica=new long int [n+1];

                for(long int i=n; i>=0; i--)
                {
                    tablica[i]=i;
                }


                long int polowa=0;

                polowa=(n/2);


                long int bufor=0;

                for(long int y=0; y<polowa; y+=2)
                {
                    bufor=tablica[y];
                    tablica[y]=tablica[n-1-y];
                    tablica[n-1-y]=bufor;
                }

                bufor=0;

                bufor = tablica[n];
                tablica[n] = tablica[polowa];
                tablica[polowa] = bufor;


                for(long int i=n; i>=0; i--)
                {
                    cout<<tablica[i]<<" ";
                }

                //PETLA SPRAWDZAJACA CZY KOLEJNY INDEX W TABLICY NIE JEST O 1 WIEKSZY
                /*
                    long int OK=0;

                for(long int z=0; z<n; z++)
                {
                    if(tablica[z]+1 == tablica[z+1] || tablica[z]-1 == tablica[z+1])
                    {
                        OK=1;
                    }

                }
                    if(OK==1)
                    cout<<"OK"<<endl;

                */
                //}

                n=0;
                bufor=0;

                delete [] tablica;

                return 0;
            } //main
}

 

komentarz 28 kwietnia 2017 przez mokrowski Mędrzec (158,960 p.)
No i nic dziwnego. To zadanie rozwiązać można bez użycia tablicy. Wyłącznie w oparciu o prostą arytmetykę i modulo.
komentarz 29 kwietnia 2017 przez BinaryMan Stary wyjadacz (12,620 p.)
Temat do zamknięcia, znalazłem błąd i działa dobrze

Podobne pytania

+1 głos
0 odpowiedzi 799 wizyt
pytanie zadane 8 maja 2021 w C i C++ przez lada_4455 Nowicjusz (170 p.)
0 głosów
1 odpowiedź 927 wizyt
pytanie zadane 7 stycznia 2017 w C i C++ przez sebastian.chwil Początkujący (300 p.)
0 głosów
1 odpowiedź 397 wizyt
pytanie zadane 6 lutego 2025 w SPOJ przez MarcelM Początkujący (450 p.)

93,720 zapytań

142,644 odpowiedzi

323,266 komentarzy

63,270 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...