したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

管理人の独り言(プログラミング関連)

1517 ◆adhRKFl5jU:2009/03/01(日) 18:25:38
jid10
-----
/*
flu - solution 1

O(n^3)

JOI spring camp
March 2008

Tetsushi Ito
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int x[100000], y[100000];
int dist[100000];

int main(void)
{
int i,j,f,a,c;
int n,m,d,k;

scanf("%d",&n);
scanf("%d",&m);
scanf("%d",&d);
scanf("%d",&k);

for(i=0;i<n;i++){
scanf("%d %d",&x[i],&y[i]);
}
for(i=0;i<n;i++) dist[i]=-1;
dist[0]=0;

for(f=0;f<n;f++){
c=0;
for(i=0;i<n;i++){
if(dist[i]!=-1) continue;
for(j=0;j<n;j++){
if(i==j) continue;
if(dist[j]!=f) continue;
if((x[i]-x[j])*(x[i]-x[j])
+ (y[i]-y[j])*(y[i]-y[j])
<= d*d){
dist[i]=dist[j]+1;
c=1;
}
}
}
if(c==0) break;
}

c=0;
for(i=0;i<n;i++){
//printf("%d ",dist[i]);
if(k-m+1 <= dist[i] && dist[i] <=k) c++;
}

// printf("n:%d m:%d d:%d k:%d ",n,m,d,k);
//printf("sol:%d ",c);

printf("%d\n",c);

/*
c=-1;
for(i=0;i<n;i++) if(dist[i]>=c) c=dist[i];
printf("rad:%d ",c);

c=0;
for(i=0;i<n;i++) if(dist[i]==-1) c++;
printf("isol:%d\n",c);
*/


return 0;
}


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板