| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
此题不是只要对极角进行排序吗?为什么还WA。。。跪求原因。。。试了半天发现只有sort可以过,改成qsort死活过不了。。。迫不得已直接暴力排序,结果还是WA。。。。
跪求大家给个解释,小菜在次跪谢了~~~
//直接写了个排序WA...
#include <stdio.h>
#include <stdlib.h>
const int MAXN = 60;
typedef struct
{
int x, y;
}POINT, *PPOINT;
POINT pd[MAXN], pu[MAXN];
int cmp( POINT a, POINT b )
{
if ( a.x*b.y > b.x*a.y )
return 0;
return 1;
}
void Paixu( PPOINT s, int l )
{
int i, j;
POINT p;
for ( i=0; i<l; ++i )
for ( j=i+1; j<l; ++j )
if ( cmp( s[i], s[j] ) )
{
p = s[i]; s[i] = s[j]; s[j] = p;
}
}
int main()
{
int dl, ul, xx, yy, i;
dl = ul = 0;
//freopen( "//home//administrator//1.in", "r", stdin );
scanf( "%d%d", &xx, &yy );
while ( scanf( "%d%d", &xx, &yy ) != EOF )
{
if ( yy > 0 )
{
pu[ul].x = xx; pu[ul].y = yy;
ul++;
}
else
{
pd[dl].x = xx; pd[dl].y = yy;
dl++;
}
}
Paixu( pu, ul );
Paixu( pd, dl );
printf( "(0,0)\n" );
for ( i=0; i<dl; ++i )
printf( "(%d,%d)\n", pd[i].x, pd[i].y );
for ( i=0; i<ul; ++i )
printf( "(%d,%d)\n", pu[i].x, pu[i].y );
return 0;
}
//sort,AC程序。。。
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
using namespace std;
struct Point
{
int x, y;
}p[60];
bool cmp( Point a, Point b )
{
int temp;
temp = a.x*b.y - a.y*b.x;
if ( temp > 0 ) return true;
return false;
}
int main()
{
int l = 0, xx, yy, i;
scanf( "%d%d", &xx, &yy );
while ( scanf( "%d%d", &p[l].x, &p[l].y ) != EOF )
l++;
sort( p, p + l, cmp );
printf( "(0,0)\n" );
for ( i=0; i<l; ++i )
printf( "(%d,%d)\n", p[i].x, p[i].y );
return 0;
}
//qsort死活过不了的。。。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
const int MAXN = 155;
struct Point
{
int x, y;
}pd[MAXN], pu[MAXN];
int cmp( const void *a, const void *b )
{
struct Point *p, *q;
int i;
p = ( struct Point * )a; q = ( struct Point * )b;
i = p->x*q->y - p->y*q->x;
if ( i > 0 ) return 1;
return 0;
}
int main()
{
int dl, ul, xx, yy, i;
dl = ul = 0;
//freopen( "//home//administrator//1.in", "r", stdin );
scanf( "%d%d", &xx, &yy );
while ( scanf( "%d%d", &xx, &yy ) != EOF )
{
pu[ul].x = xx; pu[ul].y = yy;
ul++;
}
qsort( pu, ul, sizeof( pu[0] ), cmp );
printf( "(0,0)\n" );
for ( i=0; i<ul; ++i )
printf( "(%d,%d)\n", pu[i].x, pu[i].y );
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator