Submission #1772353
Source Code Expand
#include <bits/stdc++.h>
#define REP(i,a,b) for(int i=(a);i<(b);i++)
#define RREP(i,a,b) for(int i=(a);i>=(b);i--)
#define pq priotity_queue
#define P pair<int,int>
#define P2 pair<int,P>
#define P3 pair<int,P2>
typedef long long ll; typedef long double ld;
using namespace std;
const int INF=1e9, MOD=1e9+7, around[]={0,1,1,-1,-1,0,-1,1,0,0};
const ll LINF=1.1e18;
const ld PI=abs(acos(-1));
int n,q,d[100010];
ll t,a[100010],pos[100010];
int main() {
cin >> n >> t >> q;
REP(i,0,n) cin >> a[i] >> d[i];
int l=n,r=-1;
for(int i=n-1;i>=0;i--) {
if(d[i]==2) l=i;
else {
if(l==n) pos[i]=LINF;
else pos[i]=(a[l-1]+a[l])/2;
}
}
REP(i,0,n) {
if(d[i]==1) r=i;
else {
if(r==-1) pos[i]=-LINF;
else pos[i]=(a[r]+a[r+1])/2;
}
}
REP(i,0,q) {
int x; cin >> x; x--;
if(d[x]==1) cout << min(pos[x], a[x]+t) << endl;
else cout << max(pos[x], a[x]-t) << endl;
}
return 0;
}
Submission Info
Judge Result
Set Name |
set01 |
set02 |
set03 |
set04 |
set05 |
Score / Max Score |
20 / 20 |
20 / 20 |
20 / 20 |
20 / 20 |
20 / 20 |
Status |
|
|
|
|
|
Set Name |
Test Cases |
set01 |
data1 |
set02 |
data2 |
set03 |
data3 |
set04 |
data4 |
set05 |
data5 |
Case Name |
Status |
Exec Time |
Memory |
data1 |
AC |
2 ms |
256 KB |
data2 |
AC |
6 ms |
384 KB |
data3 |
AC |
62 ms |
2176 KB |
data4 |
AC |
90 ms |
2176 KB |
data5 |
AC |
92 ms |
2176 KB |