トップページ
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日更新情報が入ります ラベル
テンプレートで利用できるパーツ
ソースをコピー・アンド・ペーストしてご利用ください。
テキスト
文字の大きさ、量、字間、行間等を確認するために入れています。
文字の大きさ、量、字間、行間等を確認するために入れています。
文字の大きさ、量、字間、行間等を確認するために入れています。
文字の大きさ、量、字間、行間等を確認するために入れています。
文字の大きさ、量、字間、行間等を確認するために入れています。
メッセージ
ボタン
パネル
パネルの見出しが入ります
文字の大きさ、量、字間、行間等を確認するために入れています。