関数の説明は、このように書くのがいいのですね!
/**
* 関数の説明
* @param arg1 引数1の説明
* @param arg2 引数2の説明
* @return 戻り値の説明
*/
int func(int arg1,int arg2) {
return 0;
}
#include
#include
#define SEGTREE_MAX 131072
typedef struct {
int max_num;
int push_num;
} segtree_t;
segtree_t segtree[SEGTREE_MAX*2-1];
/**
* 要素の変更を下の要素に反映する
* @param youso 適用する要素
*/
void segtree_push(int youso) {
if(youso*2+1r2)return r1; else return r2;
}
}
/**
* セグメント木を初期化する。
*/
void segtree_init(void) {
memset(segtree,0,sizeof(segtree));
}
/**
* セグメント木の範囲に一様に値を加える。
* @param start 範囲の開始地点(含む)
* @param end 範囲の終了地点(含まない)
* @param add 加える値
*/
void segtree_add(int start,int end,int add) {
segtree_add_internal(0,add,start,end,0,SEGTREE_MAX);
}
/**
* セグメント木の範囲の要素の最大値を取得する。
* @param start 範囲の開始地点(含む)
* @param end 範囲の終了地点(含まない)
* @return 範囲の要素の最大値
*/
int segtree_getmax(int start,int end) {
return segtree_getmax_internal(0,start,end,0,SEGTREE_MAX);
}
/**
* 時、分、秒のセットで表された時刻を秒に変換する。
* @param h 変換する時刻の時
* @param m 変換する時刻の分
* @param s 変換する自国の秒
* @return 変換された秒
*/
int getPosition(int h,int m,int s) {
return (h*60+m)*60+s;
}
/**
* メイン関数。
* @return 正常終了なら0
*/
int main(void) {
int n,i;
int h1,m1,s1,h2,m2,s2;
int p1,p2;
while(1) {
scanf("%d",&n);
if(n==0)break;
segtree_init();
for(i=0;i<n;i++) {
scanf("%d:%d:%d %d:%d:%d",&h1,&m1,&s1,&h2,&m2,&s2);
p1=getPosition(h1,m1,s1);
p2=getPosition(h2,m2,s2);
segtree_add(p1,p2,1);
}
printf("%d\n",segtree_getmax(0,24*60*60));
}
return 0;
}
ちょっと長ったらしかったですかね。
でも、こんな感じですね。みんなも実践してみたらいかがでしょうか?
…え?違う?