# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
730866 |
2023-04-26T14:36:52 Z |
grogu |
Passport (JOI23_passport) |
C++14 |
|
24 ms |
49536 KB |
#define here cerr<<"===========================================\n"
#define dbg(x) cerr<<#x<<": "<<x<<endl;
#include <bits/stdc++.h>
#define ld double
#define ll long long
#define ull unsigned long long
#define llinf 100000000000000000LL // 10^17
#define iinf 2000000000 // 2*10^9
#define pb push_back
#define popb pop_back
#define fi first
#define sc second
#define endl '\n'
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pld pair<ld,ld>
#define all(a) a.begin(),a.end()
using namespace std;
#define maxn 2505
#define lg 12
ll n,q;
pll a[maxn];
vector<pll> g[maxn];
ll dis[maxn*maxn];
ll lg2[maxn];
pll st[lg][maxn];
ll kod(pll p){return p.fi*(n+1) + p.sc;}
pll rev(ll x){return {x/(n+1),x%(n+1)};}
void upd(ll x,ll y,ll w){
g[x].pb({y,w});
cerr<<rev(x).fi<< " "<<rev(x).sc<< " "<<rev(y).fi<< " "<<rev(y).sc<<endl;
}
void getdis(ll poc){
for(ll i = 1;i<maxn*maxn;i++) dis[i] = llinf;
dis[poc] = 0;
priority_queue<pll> pq;
pq.push({0,poc});
while(pq.size()){
pll p = pq.top();
ll u = p.sc;
ll cur = -p.fi;
pq.pop();
if(cur!=dis[u]) continue;
for(pll p : g[u]){
ll s = p.fi;
ll w = p.sc;
if(cur+w<dis[s]){
dis[s] = cur+w;
pq.push({-dis[s],s});
}
}
}
}
pll mrg(pll p,pll q){
pll ans;
if(a[p.fi].fi<a[q.fi].fi) ans.fi = p.fi;
else if(a[p.fi].fi==a[q.fi].fi) ans.fi = min(p.fi,q.fi);
else ans.fi = q.fi;
if(a[p.sc].sc>a[q.sc].sc) ans.sc = p.sc;
else if(a[p.sc].sc==a[q.sc].sc) ans.sc = min(p.sc,q.sc);
else ans.sc = q.sc;
return ans;
}
pll get(ll l,ll r){
ll len = r-l+1;
ll x = lg2[len];
ll len2 = (1<<x);
pll p = st[x][l];
pll q = st[x][r-len2+1];
pll ans = mrg(p,q);
return ans;
}
int main(){
ios_base::sync_with_stdio(false);cerr.tie(0);cout.tie(0);cin.tie(0);
for(ll j = 0;j<lg;j++) lg2[(1<<j)] = j;
for(ll j = 2;j<maxn;j++){
if(lg2[j]) continue;
lg2[j] = lg2[j-1];
}
cin >> n;
for(ll i = 1;i<=n;i++){
cin >> a[i].fi >> a[i].sc;
st[0][i] = {i,i};
}
for(ll j = 1;j<lg;j++){
for(ll i = 1;i<=n;i++){
if(i+(1<<j)-1>n) continue;
st[j][i] = mrg(st[j-1][i],st[j-1][i+(1<<(j-1))]);
}
}
for(ll len = 1;len<=n;len++){
for(ll i = 1;i+len-1<=n;i++){
ll l = i,r = i+len-1;
pll p = get(l,r);
if(p.fi==p.sc){
upd(kod({l,r}),kod(a[p.fi]),1);
}else{
upd(kod({l,r}),kod({a[p.fi].fi,max(r,a[p.fi].sc)}),1);
upd(kod({l,r}),kod({min(l,a[p.sc].fi),a[p.sc].sc}),1);
}
}
}
cin >> q;
while(q--){
ll x; cin >> x;
getdis(kod({x,x}));
ll ans = dis[kod({1,n})];
if(ans==llinf) cout<<-1<<endl;
else cout<<ans<<endl;
}
return 0;
}
/**
4
1 3
2 4
2 3
4 4
1
1
5
1 5
2 4
2 3
3 5
1 5
1
3
**/
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
21 ms |
49460 KB |
Output is correct |
2 |
Correct |
20 ms |
49524 KB |
Output is correct |
3 |
Correct |
22 ms |
49448 KB |
Output is correct |
4 |
Runtime error |
2 ms |
756 KB |
Execution killed with signal 11 |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
21 ms |
49492 KB |
Output is correct |
2 |
Correct |
19 ms |
49472 KB |
Output is correct |
3 |
Correct |
22 ms |
49492 KB |
Output is correct |
4 |
Correct |
20 ms |
49460 KB |
Output is correct |
5 |
Correct |
21 ms |
49508 KB |
Output is correct |
6 |
Correct |
24 ms |
49516 KB |
Output is correct |
7 |
Correct |
23 ms |
49492 KB |
Output is correct |
8 |
Correct |
24 ms |
49492 KB |
Output is correct |
9 |
Correct |
21 ms |
49456 KB |
Output is correct |
10 |
Correct |
21 ms |
49536 KB |
Output is correct |
11 |
Runtime error |
2 ms |
724 KB |
Execution killed with signal 11 |
12 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
21 ms |
49492 KB |
Output is correct |
2 |
Correct |
19 ms |
49472 KB |
Output is correct |
3 |
Correct |
22 ms |
49492 KB |
Output is correct |
4 |
Correct |
20 ms |
49460 KB |
Output is correct |
5 |
Correct |
21 ms |
49508 KB |
Output is correct |
6 |
Correct |
24 ms |
49516 KB |
Output is correct |
7 |
Correct |
23 ms |
49492 KB |
Output is correct |
8 |
Correct |
24 ms |
49492 KB |
Output is correct |
9 |
Correct |
21 ms |
49456 KB |
Output is correct |
10 |
Correct |
21 ms |
49536 KB |
Output is correct |
11 |
Runtime error |
2 ms |
724 KB |
Execution killed with signal 11 |
12 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
21 ms |
49492 KB |
Output is correct |
2 |
Correct |
19 ms |
49472 KB |
Output is correct |
3 |
Correct |
22 ms |
49492 KB |
Output is correct |
4 |
Correct |
20 ms |
49460 KB |
Output is correct |
5 |
Correct |
21 ms |
49508 KB |
Output is correct |
6 |
Correct |
24 ms |
49516 KB |
Output is correct |
7 |
Correct |
23 ms |
49492 KB |
Output is correct |
8 |
Correct |
24 ms |
49492 KB |
Output is correct |
9 |
Correct |
21 ms |
49456 KB |
Output is correct |
10 |
Correct |
21 ms |
49536 KB |
Output is correct |
11 |
Runtime error |
2 ms |
724 KB |
Execution killed with signal 11 |
12 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
21 ms |
49460 KB |
Output is correct |
2 |
Correct |
20 ms |
49524 KB |
Output is correct |
3 |
Correct |
22 ms |
49448 KB |
Output is correct |
4 |
Runtime error |
2 ms |
756 KB |
Execution killed with signal 11 |
5 |
Halted |
0 ms |
0 KB |
- |