UNIXネットワークプログラミング

C++を用いたネットワークプログラミング

トップページ

C++によるUNIXネットワークプログラミングについての技術的なことを書いていきます。
このサイトではC++が出来ることを前提していますので、C++についてあまり詳しくない方は、C++の入門書やサイトなどを読むことをおすすめします。



long long int n,t,q,a[100010],d[100020],x[1020],ch[100030];

int main(){
	
	cin >> n >> t >> q;
	for(int i = 1;i <= n;i++){
		cin >> a[i] >> d[i];
	}
	for(int i = 1;i <= q;i++){
		cin >> x[i];
	}
	
	for(int i = 1;i < n;i++){
		if(d[i]  == 1 && d[i+1] == 2 && (a[i] + a[i+1])/2-a[i] <= t){
			ch[i] = (a[i] + a[i+1])/2;
		}else{
			ch[i] = -1;
		}
	}
	ch[0] = -1;
	ch[n] = -1;
	long long int ans;
	for(int i = 1;i <= q;i++){
		ans = a[x[i]] + (d[x[i]] == 1 ? t : -t);
	//	cout << "wei " << ans << endl;
		if(d[x[i]] == 1){
			if(ch[x[i]] != -1){
				ans = ch[x[i]];
			}else{
				for(int j = x[i]+1;j <= n;j++){
					if(ch[j] != -1 && ch[j] - a[x[i]] <= t){
						ans = min(ans,ch[j]);
					}
				}
			}
		}else{
			if(ch[x[i]-1] != -1){
				ans = ch[x[i]-1];
			}else{
				for(int j = x[i]-1;j > 0;j--){
					if(ch[j] != -1 && a[x[i]] - ch[j] <= t){
						ans = max(ans,ch[j]);
					}
				}
			}
		}
		cout << ans << endl;
	}
	return 0;
}	
	

更新履歴

  • 2015年12月13日ホームページ始めました ラベル
  • 20xx年xx月xx日更新情報が入ります ラベル
  • 20xx年xx月xx日更新情報が入ります ラベル
  • 20xx年xx月xx日更新情報が入ります ラベル
  • 20xx年xx月xx日更新情報が入ります ラベル

テンプレートで利用できるパーツ

ソースをコピー・アンド・ペーストしてご利用ください。

テキスト

文字の大きさ、量、字間、行間等を確認するために入れています。
文字の大きさ、量、字間、行間等を確認するために入れています。
文字の大きさ、量、字間、行間等を確認するために入れています。
文字の大きさ、量、字間、行間等を確認するために入れています。
文字の大きさ、量、字間、行間等を確認するために入れています。

メッセージ

文字の大きさ、量、字間、行間等を確認するために入れています。
文字の大きさ、量、字間、行間等を確認するために入れています。
文字の大きさ、量、字間、行間等を確認するために入れています。
文字の大きさ、量、字間、行間等を確認するために入れています。
文字の大きさ、量、字間、行間等を確認するために入れています。
文字の大きさ、量、字間、行間等を確認するために入れています。

ボタン

大ボタン 大ボタン 大ボタン 大ボタン 大ボタン 大ボタン

中ボタン 中ボタン 中ボタン 中ボタン 中ボタン 中ボタン

小ボタン ボタン 小ボタン 小ボタン 小ボタン 小ボタン

パネル

パネルの見出しが入ります
文字の大きさ、量、字間、行間等を確認するために入れています。
intさわだん Twitter

inserted by FC2 system