1 / 24
Jul 2010

Witam,

mecze sie z tym zadaniem, nie wiem juz jaki tutaj jest haczyk : /
Moze ma ktos jakies "podchwytliwe" testy?

moj kod java

kodu nima :P

Pozdrawiam

  • created

    Jul '10
  • last reply

    Oct '19
  • 23

    replies

  • 2.9k

    views

  • 11

    users

  • 4

    links

4 months later

#include <iostream>
using namespace std;
int pole(int,int,int,int,int,int,int,int);
int main()
{
    int x1,x2,y1,y2,x3,y3,y4,x4,suma;
    cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4;
    suma=pole(x1,y1,x2,y2,x3,y3,x4,y4);
    cout<<suma<<endl;
    system("PAUSE");
    return 0;
}
int pole(int x1, int y1, int x2,int y2,int x3,int y3,int x4,int y4)
{
    int a,b,s=0,c,d,e=0;
    a=x1;
    if(a>x2) a=x2;
    if(a>x3) a=x3;
    if(a>x4) a=x4;
    c=x1;
    if(c<x2) c=x2;
    if(c<x3) c=x3;
    if(c<x4) c=x4;
    b=y1;
    if(b<y2) b=y2;
    if(b<y3) b=y3;
    if(b<y4) b=y4;
    d=y1;
    if(d>y2) d=y2;
    if(d>y3) d=y3;
    if(d>y4) d=y4;
    for(int i=b;i>=d;i--){
            cout<<i<<": ";
            for(int j=a;j<=c;j++){
                    if( ((i<=y2 && i>=y1) && (j<=x2 && j>=x1))) || ((i<=y4 && i>=y3) && (j<=x4 && j>=x3)) )
                        { s++; cout<<"x";}
                    else cout<< "  ";
                    e++;
                    }
                    cout<<endl;
                    }
    cout<<"y1="<<y1<<" y2="<<y2<<" x1="<<x1<<" x2="<<x2<<" y3="<<y3<<" y4="<<y4<<" x3="<<x3<<" x4="<<x4<<endl;
    return s;
}

I wciąż mam błąd xD załamię się stuck_out_tongue nie mogę znaleźć błędu ;/

1 year later

@narbej Twoje wskazówki były bezcenne!!! ... faktycznie kod znaaaacznie ograniczyl swoją objętość i jest wkońcu AC .... tamtą wersję pozostawiam w spokoju bo sam jak na ten kod patrze to mi się odechciewa go analizować smile jeszcze raz dziekuję smile

3 years later

Myślę że ten fragment trzeba sprawdzić
"int x1,x2,y1,y2,x3,y3,y4,x4,suma;
cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4;
suma=pole(x1,y1,x2,y2,x3,y3,x4,y4);
cout< system("PAUSE");"

8 months later

Przechodzi dla każdych moich danych, a i tak jest WA. Ma ktoś jakieś trudne testy?

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int x[5]= {}, y[5]= {}, pier, drug, wspo, a, b;
    cin>>x[1]>>y[1]>>x[2]>>y[2];
    cin>>x[3]>>y[3]>>x[4]>>y[4];
    pier = (x[2]-x[1]) * (y[2]-y[1]);
    drug = (x[4]-x[3]) * (y[4]-y[3]);
    if ((y[1]<y[2]&&y[2]<y[3]&&y[3]<y[4]) || (y[3]<y[4]&&y[4]<y[1]&&y[1]<y[2])) // prostokaty rozlaczone
        b=0;
    else
    {
        sort (y+1, y+5);  // gdy prostokaty zlaczone
        b = y[3]-y[2];
    }
    if ((x[1]<x[2]&&x[2]<x[3]&&x[3]<x[4]) || (x[3]<x[4]&&x[4]<x[1]&&x[1]<x[2]))
        a=0;
    else
    {
        sort (x+1, x+5);
        a = x[3]-x[2];
    }
    wspo = a*b;
    cout << pier+drug-wspo;
    return 0;
}

Pozdrawiam

Dziękuję.
Dalej nie przyjmuje. Widzę że sędzia robi 7 testów. Wszystkie może odrzucać czy wystarczy jeden odrzucony, aby była błędna odpowiedź?

3 months later

Cześć, mam problem. Wydaje mi się, że wszystko jest ok, no ale AC jest nieosiągalne
Z góry dzięki za pomoc :slight_smile:

Wielkie dzięki, tego nie zauważyłem :wink:
Tylko dlaczego autor zadania pisze :"współrzędne odpowiednio lewego-dolnego i prawego-górnego rogu pierwszego prostokąta"?
A i jeszcze jedno pytanie, jaki miał być tam wynik?

Ok, dzięki. Co do programu, to oblicza poprawnie :slight_smile: trzeba było tylko pętlę dodać. A u Ciebie źle policzył, bo dodałeś licznik z przodu

3 years later

Sędzia w tym zadaniu błędnie weryfikuje podesłane kody. Napisałem algorytym i sędzia uznał go jako prawidłowy, a tymczasem sprawdzałem różne przypadki testowe i wiem że mój algorytm zawiera błąd i sędzia go nie wyłapuje.

Czy mam przekleić swój kod ? Autor zadania powienien dodać chyba kilka przypadków testowych.

Podaj kilka przypadków, do których Twój program podaje złe wyniki i oczywiście podaj te wyniki

Dla poniższego zestawu danych:

1 1 5 5 3 1 7 5

prawidłowa odpowiedź powinna wynosić 24 a tymczasem mój algorytm zwraca 16 i sędzia uznaje go jako prawidłowy.

Czy tutaj wkleić mój kod ?

Z kolei inny algorytm wysłany z mojego alternatywnego profilu dla zestawu danych:

1 1 10 10 1 1 15 5

zwraca wynik 81 a powinno być 101 i sędzia również uznaje go jako prawidłowy.

Hmm, mój kod podaje w pierwszym przypadku wynik 24 a w drugim 101.
Pochwal się swoim kodem, tylko najlepiej będzie gdy podasz link do tego kodu na Ideone