61 / 83
Jan 2010
7 months later

Mógłby ktoś znaleźć błąd, bo dla wszystkich danych jakie spr wychodziło dobrze, a dostaję błędną odpowiedź.

#include <iostream>
#include <string>
using namespace std;
unsigned long long int odleglosc(long long int, long long int);
int main()
{
    long long int t, n, x[100], y[100];
    string nazwa[100];
    cin >> t;
    while(t--)
    {
        cin >> n;
        for(int i=0; i<n; i++) 
        {
            cin >> nazwa[i] >> x[i] >> y[i];
        }
        for(int i=0; i<n-1; i++)
        {
            for(int j=1; j<n; j++)
            {
                if(odleglosc(x[i],y[i])>odleglosc(x[j],y[j]))
                {
                   swap(nazwa[i], nazwa[j]);
                   swap(x[i], x[j]);
                   swap(y[i], y[j]);
                }
            }
        }
        for(int i=0; i<n; i++) cout << nazwa[i] << " " << x[i] << " " << y[i] << "\n";
        cout << "\n";
    }
    return 0;
}
unsigned long long int odleglosc(long long int x, long long int y)
{
       unsigned long long int d;
       d=x*x+y*y;
       return d;
}
11 months later

Mam problem, ponieważ rozwiązanie, które napisałem wygląda na poprawne (nie znalazłem danych przy których odpowiedz byłaby błędna), ale niestety tester nie chce go zaakceptować. Może ktoś spojrzeć na to i wskazać mi w czym tkwi problem?

#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
    struct PKT
    {
       string nazwa; //nazwa pkt
       long long x;       //wsp. x
       long long y;       //wsp. y
       long long o;  //odleglosc od srodka ukladu
    };
    int t; //zmianna zawierająca ilość testów
    cin >> t;
    for(int x=0; x<t; x++) {
            int a; //zmienna zawierająca ilość punktów
            cin >> a;
            PKT p[a]; // tablica pkt
            for (int y=0; y<a; y++) {
                cin >> p[y].nazwa >> p[y].x >> p[y].y;
                p[y].o = (p[y].x*p[y].x) + (p[y].y*p[y].y);
            }
            if (a>1) {
                int zmiany;
                do {
                    zmiany = 0;
                    for (int y=0; y<a-1; y++) {
                        if (p[y].o > p[y+1].o) {
                            string stemp;
                            int temp, temp1, temp2;
                            stemp = p[y].nazwa;
                            temp = p[y].o;
                            temp1 = p[y].x;
                            temp2 = p[y].y;
                            p[y].nazwa = p[y+1].nazwa;
                            p[y].o = p[y+1].o;
                            p[y].x = p[y+1].x;
                            p[y].y = p[y+1].y;
                            p[y+1].nazwa = stemp;
                            p[y+1].o = temp;
                            p[y+1].x = temp1;
                            p[y+1].y = temp2;
                            zmiany++;
                        }
                    }
                } while (zmiany>1);
            }
            for (int y=0; y<a; y++) {
                cout << p[y].nazwa << ' ' << p[y].x << ' ' << p[y].y << endl;
            }
            cout << endl;
    }
    return 0;
}

Z góry dzięki za pomoc.

2 months later

w ktorym miejscu ma byc ta pusat linia??

#include <cstdlib>
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
int main(int argc, char *argv[])
{
    string nazwa[10000];
    long long int x[10000],y[10000],t,ile;
    cin>>t;
    for(int i=0;i<t;i++){
            cin>>ile;
            for(int j=0;j<ile;j++){
                    cin>>nazwa[j]>>x[j]>>y[j];        
            }
            for(int j=0;j<ile*2;j++){
                    for(int z=0;z<ile-1;z++){
                            int x1 = (x[z]>0 ? x[z]: -x[z]);
                            int y1 = (y[z]>0 ? y[z]: -y[z]);
                            int x2 = (x[z+1]>0 ? x[z+1]: -x[z+1]);
                            int y2 = (y[z+1]>0 ? y[z+1]: -y[z+1]);
                            double l1 = sqrt(x1+y1);
                            double l2 = sqrt(x2+y2);
                            if(l1>l2){
                                            int tmp1=x[z],tmp2=y[z];
                                            x[z]=x[z+1];
                                            y[z]=y[z+1];
                                            x[z+1]=tmp1;
                                            y[z+1]=tmp2;
                                            string tmp=nazwa[z];
                                            nazwa[z]=nazwa[z+1];
                                            nazwa[z+1]=tmp;
                                            }
                    }
            }
            for(int xd=0;xd<ile;xd++)
                    cout<<nazwa[xd]<<" "<<x[xd]<<" "<<y[xd]<<endl;
                    cout<<endl;
    }
}
19 days later

#include <iostream>
#include <string>
using namespace std;
struct pkt{
public:
	string str;
	int x,y,o,i;
};
int main()
{
	int t,x,y,n;
	string str;
	cin >> t;
	while(t--)
	{
		cin >> n;
		pkt *p = new pkt [n];
		for(int i=0;i<n;i++)
		{
			cin >>p[i].str >> p[i].x >> p[i].y;
			p[i].o=(p[i].x*p[i].x+p[i].y*p[i].y);
		}
		int min=p[0].o, mini;
		for(int i=0;i<n;i++)
		{
			mini=i;
			for(int j=i;j<n;j++)
			{
				if(p[j].o<min)
				{
					min=p[j].o;
					mini=j;
				}
			}
			swap(p[i].str,p[mini].str);
			swap(p[i].x,p[mini].x);
			swap(p[i].y,p[mini].y);
			swap(p[i].o,p[mini].o);
		}
    	for(int i=0;i<n;i++)
	{
		cout << p[i].str << " " << p[i].x <<" "<< p[i].y <<" " << endl;
	}
	cout << endl;

}
//system("pause");
}

czemu WA? kto odpowie mi ;]?

A sprawdziłeś w ogóle program dla danych testowych...?
Masz złe odpowiedzi dla liczb ujemnych.

o.0 nie ma to jak robic kilka(nascie) rzeczy naraz... no ale kod dla potomnych, jak znajda blad niech maja;]

12 days later

Witam.
Mam problem z zadaniem z tematu które jakiś czas temu robiłem. Przykładowe dane wychodzą dokładnie tak samo, na innych także testowałem, wynik pozytywny mym skromnym zdaniem. Jednakże sędzią zwraca mi błędną odpowiedź. Kod który był poddawany testowi wygląda tak:

#include <iostream>
#include <string.h>
using namespace std;
int main()
{ 
 int t,t2,i,asd;
 float a;
 char foo[15];
 cin >> t;
 while(t--)
 {
  cin >> t2;
  i=0;
  char nazwa[t2][15];
  int ptk[t2][2];
  float wynik[t2];
  while(i<t2)
  {
   cin >> nazwa[i] >> ptk[i][0] >> ptk[i][1];
   wynik[i] = (ptk[i][0]*ptk[i][0])+(ptk[i][1]*ptk[i][1]);
   i++;
  }
  for(i=0;i<t2-1;i++)
  {
   for(int j=i;j<t2-1;j++)
   {
           if(wynik[j] > wynik[j+1])
           {
               strcpy(foo, nazwa[j+1]);
               strcpy(nazwa[j+1], nazwa[j]);
               strcpy(nazwa[j], foo);
               a = wynik[j+1];
               wynik[j+1] = wynik[j];
               wynik[j] = a;
               asd = ptk[j+1][0];
               ptk[j+1][0] = ptk[j][0];
               ptk[j][0] = asd;
               asd = ptk[j+1][1];
               ptk[j+1][1] = ptk[j][1];
               ptk[j][1] = asd;
           }
   }
  }
  for(i=0;i<t2;i++)
  {
   cout << nazwa[i] << " "<< ptk[i][0] << " " <<  ptk[i][1] << endl;
  }
  if(t>0)cout << endl;
 } 
 return 0;   
}

Proszę o pomoc wink
Z góry dzięki dla zainteresowanych.

No więc na przykład taki test:

1
10
A 7 7
B -7 -7
C -7 7
D 7 -7
E 5 5
F -5 -5
G -5 5
H 5 -5
I 7 5
J 5 7

Odpowiedź mojego zaakceptowanego programu:

E 5 5
F -5 -5
G -5 5
H 5 -5
I 7 5
J 5 7
A 7 7
B -7 -7
C -7 7
D 7 -7
1 month later

Witam, próbuję rozwiązać to zadanie, ale otrzymuję status SE. Proszę o komentarz do mojego kodu, wskazówkę lub wyjaśnienie błędu w moim zrozumieniu treści zadania.
Kod:

tu był kod
1 year later

raczy sory źle napisałem ... chciałem napisać 4 punkty i jakaś sugestia aby dostać 5 ??

1 year later
1 year later

to zależy smile, w programie można

w deklaracji struktury też, ale tylko wtedy, gdy jest typu static const, czyli pożytek z takiej zmiennej niewielki

i oczywiście można napisać konstruktor dla struktury, a tam można nadać wartość

1 month later

Zapewne używasz nowszego, niż na spoju kompilatora c++. Funkcja lambda i takie tam inne udogodnienia. Jeżli innym się to udało w c++, to albo to ty popraw swój kod, albo poczekaj, aż na spoju zostanie zaktualizowany kompilator do nowszej wersji, ale to może potrwać.

Ależ ja wiem, że się da, chciałem jednak wysłać rozwiązanie trochę bardziej urozmaicone, dla własnej satysfakcji. Wręcz się zdziwiłem, że SPOJ nie obsługuje wszystkich najnowszych standardów. Ciekaw jestem kiedy to poprawią.

2 months later

Dzięki za pomoc i rade. Od dziś będę stosował nazwy zmiennych takie jakie są podane w zadaniu unamused

1 month later

Spróbuj skompilwać to u siebie i sprawdź wynik dla danych 100 100. Ja dostaje u siebie wynik 23561.944905 (po usunięciu linii o której wspomniałeś).
Chodzi mi o to, że może jest coś nie tak z Code::Blocks , skoro dostaje inny wynik niż podany na stronie z zadaniem.

No i bardzo dobrze. Ja u sibie, zanim napisałem, już sprawdzałem. Teraz też i dla 100 100, mam dokładnie taki sam wynik jak ty, z dokładnością do ostatniego miejsca.
Ale w zadaniu są dwa zupełnie inne testy:
10 10
oraz
1000 1500,
Chyba, że porównujesz wynik dla 100 100 do jakiegoś testu tu na forum?

omg....
nie potrafię wyjaśnić dlaczego ubzdurałem sobie, że jest tam 100 100.
ok, w takim razie wszystko jasne smiley