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
Zgadzam się z tobą, że masz problem, i że ci się (jedynie) wydaje
mnie natomiast wydaje się, że za mało możliwości rozważyłeś, sprawdź twój program z innymi danymi63
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.
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.
Niestety nie posiadam profilu na ideone. Mogę go jedynie wkleić jako zwykły tekst.
Najprawdopodobniej sędzia nie uwzględnia sytuacji gdy współrzędne x jednego prostokąta częściowo pokrywają się z x drugiego prostokąta a y są takie same (pierwszy przypadek) oraz gdy prostokąty częściowo na siebie nachodzą, ale dolne wierzchołki obu prostokątów są takie same (drugi przypadek) .
Ok.
To jest algorytm który podaje 16 zamiast 24 z pierwszego przypadku:
#include<iostream>
using namespace std;
int main() {
unsigned short xl1, yl1, xr1, yr1, xl2, yl2, xr2, yr2;
cin >> xl1 >> yl1 >> xr1 >> yr1 >> xl2 >> yl2 >> xr2 >> yr2;
if (xr1 <= xl2 || xr2 <= xl1 || yr1 <= yl2 || yr2 <= yl1)
cout << (xr1 - xl1)*(yr1 - yl1) + (xr2 - xl2)*(yr2 - yl2);
else if ((xr1 < xr2 && yr1 > yr2) || (xr1 > xr2 && yr1 < yr2) || (xl2 < xl1 && yl2 > yl1) || (xl2 > xl1 && yl2 < yl1)) {
int commx, commy;
commx = xr1 > xr2 ? xr2 - xl1 : xr1 - xl2;
commy = yr1 > yr2 ? yr2 - yl1 : yr1 - yl2;
cout << (xr1 - xl1)*(yr1 - yl1) + (xr2 - xl2)*(yr2 - yl2) - commx * commy;
}
else {
if ((xr1 - xl1)*(yr1 - yl1) > (xr2 - xl2)*(yr2 - yl2)) cout << (xr1 - xl1)*(yr1 - yl1);
else cout << (xr2 - xl2)*(yr2 - yl2);
}
return 0;
}
a to drugi algorytm który podaje 81 zamiast 101:
#include<iostream>
using namespace std;
int main()
{
unsigned short x1,y1,x2,y2,x3,y3,x4,y4;
unsigned int area,shx,shy;
cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4;
if (x2<=x3 || x4<=x1 || y2<=y3 || y4<=y1) cout<<(x2-x1)*(y2-y1)+(x4-x3)*(y4-y3);
else if ((x2<x4 && x1<x3) || (x1>x3 && x2>x4) || (y2<y4 && y1<y3) || (y1>y3 && y2>y4)){
area=(x2-x1)*(y2-y1)+(x4-x3)*(y4-y3);
if (x2<x4 && x1<x3) shx=x2-x3;
else if (x1>x3 && x2>x4) shx= x4-x1;
else shx=x2-x1;
if (y2<y4 && y1<y3) shy = y2-y3;
else if (y1>y3 && y2>y4) shy = y4-y1;
else shy = y2-y1;
cout<<area-shx*shy;
}
else{
if ((x2-x1)*(y2-y1)>(x4-x3)*(y4-y3)) cout<<(x2-x1)*(y2-y1);
else cout<<(x4-x3)*(y4-y3);
}
return 0;
}
Dla obu sędzia zwraca AC.
Pozdrawiam
Możliwe, ale z drugiej strony to nie SPOJ, czy sędzia jest błędny tylko po prostu twój kod jest błędny i w pierwszym rzędzie to Ty powinieneś poprawić swój kod. To, że dostajesz mimo tego AC, to faktycznie brak takich tetsów.
Niestety w zasadzie tylko autor mógłby dodać dodatkowe testy, ale możliwe, że już dawno nie jest tu aktywny. Ja ani nie jestem w stanie tego zrobić ani nie jestetm nawet tym specjalnie zaintertesowany. Mój program, podobnie jak @korkirw, daje w obu twoich testach poprawne odpowiedzi.
Suggested Topics
Topic | Category | Replies | Views | Activity |
---|---|---|---|---|
TFRACAL - Kalkulator ułamków | Zbiór zadań | 2 | 194 | Feb 1 |
FR_20_02 - Poszukiwacze skarbów - Błąd w testach? | Zbiór zadań | 1 | 155 | Apr 2 |
SPOJ.com - Problem ZABAWA pl.spoj.com | Zbiór zadań | 6 | 139 | Jun 23 |