Entries

スポンサーサイト (この記事を編集する[管理者用])

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/1269-678182c4
この記事にトラックバックする(FC2ブログユーザー)

2010 Round 1C A問題 - Rope Intranet (この記事を編集する[管理者用])

Source

Google code jam 2010 Round 1C A問題
Problem Statement

問題概要

それぞれ要素数Nの相異なる数字からなる数列A[i]とB[i]が与えられる.
N本の線分の端点をそれぞれ(0,A[i])-(1,B[i])としたとき,交点の数を求める問題.
ただし,3本以上の線分が同じ点で交わることはないとする.
small: Nは2以下.
large: Nは1000以下

解法

全部の線分の組み合わせに対して,交わってるかどうか判定する.

Cによるスパゲッティなソースコード
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define REP(i,a,b) for(i=a;i<b;i++)
#define rep(i,n) REP(i,0,n)

int main(){
  int i,j,k,l,m,n;
  int x[1000],y[1000];
  int res;
  int size,count=0;

  scanf("%d",&size);
  while(size--){
    scanf("%d",&n);
    rep(i,n) scanf("%d%d",x+i,y+i);
    res=0;
    rep(i,n) REP(j,i+1,n) if( (x[i]-x[j])*(y[i]-y[j])<0 ) res++;
    printf("Case #%d: %d\n",++count,res);
  }

  return 0;
}

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/1269-678182c4
この記事にトラックバックする(FC2ブログユーザー)

Appendix

Recent Articles

ブログ内検索

Ads


(プライバシーポリシー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。