# |
제출 시각 |
아이디 |
문제 |
언어 |
결과 |
실행 시간 |
메모리 |
25562 |
2017-06-23T05:12:39 Z |
김현수(#1073) |
버스 (JOI14_bus) |
C++11 |
|
413 ms |
29128 KB |
#include<bits/stdc++.h>
#define X first
#define Y second
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
const ll N = 100005, M = 300005, inf = 1e18;
ll n, m, q;
bool chk[N];
vector<pll> can[N], ans;
struct sexy {
ll s, e, x, y;
bool operator < (const sexy &T) const {
return (y > T.y);
}
};
vector<sexy> a;
bool comp (pll A, pll B) {
if(A.X != B.X) return A.X > B.X;
return A.Y < B.Y;
}
void arrange (vector<pll> &V) {
vector<pll> X;
for(auto &T : V) X.push_back(T);
V.clear();
sort(X.begin(), X.end(), comp);
ll mn = inf;
for(auto &T : X) {
if(mn > T.Y) V.push_back(T);
mn = min(mn, T.Y);
}
reverse(V.begin(), V.end());
}
ll lb (vector<pll> &V, ll X) {
auto it = lower_bound(V.begin(), V.end(), (pll){X, 0});
if(it == V.end()) return inf;
return it->second;
}
ll ub (vector<pll> &V, ll X) {
auto it = upper_bound(V.begin(), V.end(), (pll){X, inf});
if(it == V.begin()) return inf; it--;
return it->second;
}
int main()
{
scanf("%lld%lld",&n,&m);
for(ll i=1;i<=m;i++) {
ll S, E, X, Y;
scanf("%lld%lld%lld%lld",&X,&Y,&S,&E);
a.push_back({S, E, X, Y});
}
sort(a.begin(), a.end());
for(auto &T : a) {
if(T.y == n) {
can[T.x].push_back({T.s, T.e});
continue;
}
if(!chk[T.y]) {
arrange(can[T.y]);
chk[T.y] = true;
}
ll V = lb(can[T.y], T.e);
can[T.x].push_back({T.s, V});
}
arrange(can[1]);
for(auto &T : can[1]) {
ans.push_back({T.Y, T.X});
}
scanf("%lld",&q);
while(q--) {
ll T, V;
scanf("%lld",&T);
V = ub(ans, T);
printf("%lld\n",(V == inf ? -1 : V));
}
}
Compilation message
bus.cpp: In function 'int main()':
bus.cpp:55:25: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%lld%lld",&n,&m);
^
bus.cpp:58:40: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%lld%lld%lld%lld",&X,&Y,&S,&E);
^
bus.cpp:78:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%lld",&q);
^
bus.cpp:81:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%lld",&T);
^
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
4468 KB |
Output is correct |
2 |
Correct |
0 ms |
4468 KB |
Output is correct |
3 |
Correct |
0 ms |
4468 KB |
Output is correct |
4 |
Correct |
0 ms |
4468 KB |
Output is correct |
5 |
Correct |
0 ms |
4468 KB |
Output is correct |
6 |
Correct |
0 ms |
4468 KB |
Output is correct |
7 |
Correct |
0 ms |
4468 KB |
Output is correct |
8 |
Correct |
0 ms |
4468 KB |
Output is correct |
9 |
Incorrect |
0 ms |
4468 KB |
Output isn't correct |
10 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
4468 KB |
Output is correct |
2 |
Correct |
33 ms |
4468 KB |
Output is correct |
3 |
Correct |
33 ms |
4468 KB |
Output is correct |
4 |
Correct |
0 ms |
4468 KB |
Output is correct |
5 |
Correct |
0 ms |
4468 KB |
Output is correct |
6 |
Incorrect |
3 ms |
4468 KB |
Output isn't correct |
7 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
319 ms |
29128 KB |
Output is correct |
2 |
Correct |
273 ms |
29128 KB |
Output is correct |
3 |
Correct |
253 ms |
29128 KB |
Output is correct |
4 |
Correct |
329 ms |
29128 KB |
Output is correct |
5 |
Correct |
319 ms |
29128 KB |
Output is correct |
6 |
Correct |
313 ms |
29128 KB |
Output is correct |
7 |
Correct |
276 ms |
29128 KB |
Output is correct |
8 |
Correct |
336 ms |
29128 KB |
Output is correct |
9 |
Correct |
349 ms |
29128 KB |
Output is correct |
10 |
Correct |
243 ms |
29128 KB |
Output is correct |
11 |
Incorrect |
259 ms |
29128 KB |
Output isn't correct |
12 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
339 ms |
29128 KB |
Output is correct |
2 |
Correct |
413 ms |
29128 KB |
Output is correct |
3 |
Correct |
326 ms |
29128 KB |
Output is correct |
4 |
Correct |
313 ms |
29128 KB |
Output is correct |
5 |
Correct |
333 ms |
29128 KB |
Output is correct |
6 |
Correct |
353 ms |
29128 KB |
Output is correct |
7 |
Incorrect |
299 ms |
29128 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |