Submission #02234
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | //long long使う #include<bits/stdc++.h> using namespace std; #define INF (1<<29)//INF #define F first #define S second #define VS vector<string> #define VI vector<int> #define REPI(i,s,n) for(int i=s;i<n;i++)//sからn未満の間iを回す #define REPJ(j,s,n) for(int j=s;j<n;j++)//sからn未満の間iを回す #define RREPI(i,s,n) for(int i=s;i>=n;i--)//sからn以下の間iを回す #define RREPJ(j,s,n) for(int j=s;j>=n;j--)//sからn以下の間jを回す #define ALL(a) a.begin(),a.end()//ソートとかに使える sort(ALL(vec))のように #define SET(a,c) memset(a,c,sizeof(a));//aをc(0or1)で初期化する #define DEBUGONE(x) cout<<#x<<" : "<<x<<endl;//デバックで一つの変数を表示 #define DEBUGTWO(x,y) cout<<#x<<" : "<<x<<" "<<#y<<" : "<<y<<endl;//デバックで二つの変数を表示 #define DEBUGTHREE(x,y,z) cout<<#x<<" : "<<x<<" "<<#y<<" : "<<y<<" "<<#z<<" : "<<z<<endl;//デバックで三つの変数を表示 #define OUTONE(x) cout<<x<<endl;//一つの変数を表示 #define OUTTWO(x,y) cout<<x<<" "<<y<<endl;//二つの変数を表示 #define OUTTHREE(x,y,z) cout<<x<<" "<<y<<" "<<z<<endl;//三つの変数を表示 typedef long long int64; typedef pair<string, int > Psi; typedef pair< int , int > Pii; typedef pair< long long , int > Pli; long long n,t,q; Pli human[100005]; long long speak[100005]={0}; main(){ int left=0,right=0; cin>>n>>t>>q; for ( int i=1;i<=n;i++){ cin>>human[i].F>>human[i].S; if (human[i].S==2){ if (right!=0){ speak[i]=right; } } else if (human[i].S==1){ right=i; } } for ( int i=n;i>=1;i--){ if (human[i].S==1){ if (left!=0){ speak[i]=left; } } else if (human[i].S==2){ left=i; } } long long num; REPI(i,0,q){ cin>>num; if (speak[num]==0){ if (human[num].S==1){ OUTONE((human[num].F+t)); } else if (human[num].S==2){ OUTONE((human[num].F-t)); } } else if (speak[speak[num]]==num){ //最初に止まる if ( labs ((human[num].F-human[speak[num]].F)/2)<=t){ OUTONE((human[num].F+human[speak[num]].F)/2); } else { if (human[num].S==1){ OUTONE((human[num].F+t)); } else if (human[num].S==2){ OUTONE((human[num].F-t)); } } } else { long long point=(human[speak[speak[num]]].F+human[speak[num]].F)/2; if ( labs (human[num].F-point)<=t){ OUTONE(point); } else { if (human[num].S==1){ OUTONE((human[num].F+t)); } else if (human[num].S==2){ OUTONE((human[num].F-t)); } } } } } |
ステータス
項目 | データ |
---|---|
問題 | 0260 - JOI国のお散歩事情 (Walking in JOI Kingdom) |
ユーザー名 | ei1417 |
投稿日時 | 2015-12-14 11:58:30 |
言語 | C++11 |
状態 | Accepted |
得点 | 5 |
ソースコード長 | 2620 Byte |
最大実行時間 | 80 ms |
最大メモリ使用量 | 2912 KB |
セット
セット | 得点 | Cases | |
---|---|---|---|
1 | INPUT1 | 1 / 1 | *in1.txt |
2 | INPUT2 | 1 / 1 | *in2.txt |
3 | INPUT3 | 1 / 1 | *in3.txt |
4 | INPUT4 | 1 / 1 | *in4.txt |
5 | INPUT5 | 1 / 1 | *in5.txt |
テストケース
ファイル名 | 状態 | 実行時間 | メモリ使用量 | # | ||||
---|---|---|---|---|---|---|---|---|
2016-yo-t4-in1.txt | AC | 12 ms | 476 KB |
1
|
||||
2016-yo-t4-in2.txt | AC | 17 ms | 824 KB |
2
|
||||
2016-yo-t4-in3.txt | AC | 58 ms | 2848 KB |
3
|
||||
2016-yo-t4-in4.txt | AC | 78 ms | 2784 KB |
4
|
||||
2016-yo-t4-in5.txt | AC | 80 ms | 2912 KB |
5
|
||||
2016-yo-t4-in_s1.txt | AC | 15 ms | 540 KB | |||||
2016-yo-t4-in_s2.txt | AC | 13 ms | 640 KB |