Http://acm.nyist.net/JudgeOnline/problem.php? PID = 8
Note: When sorting With sort, it is passed (the pointer at the starting position, accepting the pointer for comparison );
Then, in the Structure Weight and overload operator, note that in the struct, If You Want To sort by a certain regular order, you must overload the operator, including <=.
The overload operator is written in qsort.
The Code is as follows:
# Include <stdio. h> # include <algorithm> # include <stdlib. h> # include <string. h> using namespace STD; struct node {int num; int L; int h; bool operator <(node T) const // overload less than sign {int L1 = max (L, h); int H1 = min (L, H); int L2 = max (T. l, T. h); int H2 = min (T. l, T. h); If (num! = T. Num) return num <t. Num; // overload operator else {If (L1! = L2) return L1 <L2; elsereturn H1 <H2 ;}} bool operator ==( node T) const // Overload equals sign {int L1 = max (L, H ); int H1 = min (L, H); int L2 = max (T. l, T. h); int H2 = min (T. l, T. h); Return L1 = L2 & H1 = h2;} A [1005]; int main () {int t; int I; scanf ("% d ", & T); While (t --) {int m; scanf ("% d", & M); for (I = 0; I <m; I ++) {scanf ("% d", & A [I]. num, & A [I]. l, & A [I]. h); if (a [I]. L <A [I]. h) {swap (A [I]. l, a [I]. h) ;}} sort (A, A + M); M = unique (A, A + M)-A; // unique () the required parameter must be a pointer returned. for (I = 0; I <m; I ++) printf ("% d \ n", a [I]. num, a [I]. l, a [I]. h);} return 0 ;}
# Include <stdio. h> # include <algorithm> # include <stdlib. h> # include <string. h> using namespace STD;/* struct node {int num; int L; int h; bool operator <(node T) const // overload less than sign {int L1 = max (L, h); int H1 = min (L, H); int L2 = max (T. l, T. h); int H2 = min (T. l, T. h); If (num! = T. Num) return num <t. Num; // overload operator else {If (L1! = L2) return L1 <L2; elsereturn H1 <H2 ;}} bool operator ==( node T) const // Overload equals sign {int L1 = max (L, H ); int H1 = min (L, H); int L2 = max (T. l, T. h); int H2 = min (T. l, T. h); Return L1 = L2 & H1 = h2;} A [1005]; */struct node {int num; int L; int h; bool operator = (node T) const {return H = T. H & l = T. l ;}} A [1005]; int CMP (const void * a, const void * B) {node * x = (node *) A, * Y = (node *) b; If (X-> num! = Y-> num) {return X-> num-y-> num;} else {If (X-> L! = Y-> L) return X-> L-y-> L; elsereturn X-> H-y-> H ;}} int main () {int T; int I; scanf ("% d", & T); While (t --) {int m; scanf ("% d", & M); for (I = 0; I <m; I ++) {scanf ("% d", & A [I]. num, & A [I]. l, & A [I]. h); if (a [I]. L <A [I]. h) {swap (A [I]. l, a [I]. h) ;}}// sort (A, A + M); qsort (a, m, sizeof (A [0]), CMP); M = unique (, A + M)-A; // The parameter required by unique () must be a pointer returned and also a pointer. for (I = 0; I <m; I ++) printf ("% d \ n", a [I]. num, a [I]. l, a [I]. h);} return 0 ;}