Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<algorithm>
- #define MAX 1000
- bool cx( point a , point b ) { return a.x < b.x };
- bool cy( point a , point b ) { return a.y < b.y };
- struct point{
- double x , y;
- }map[MAX] , mapy[MAX];
- double solve( int L , int R ){
- if( L >= R ) return 1e7;
- int mid = ( L + R ) >> 1 , t = 0;
- double d = min( solve( L , M ) , solve( M + 1 , R ) );
- for( int i = mid ; i >= L && map[mid].x - map[i].x < d; --i ) mapy[t++] = map[i];
- for( int i = M + 1 ; i <= R && map[i].x - map[mid].x < d ; ++i ) mapy[t++] = map[i];
- sort( mapy , mapy + t , cy );
- for( int i = 0 ; i < t - 1 ; i++ )
- for( int j = 1 ; j < 3 && i + j < t ; j++ )
- d = abs( mapy[i] - mapy[i + j] ) < d ? abs( mapy[i] - mapy[i + j] ) : d;
- return d;
- }
- void init(){
- // create map
- }
- int main(){
- init();
- sort( map , map + MAX , cx );
- solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement