# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
888974 | 2023-12-18T14:17:56 Z | ducngo | Passport (JOI23_passport) | C++17 | 24 ms | 8540 KB |
#include <bits/stdc++.h> #define getbit(i, j) ((i >> j) & 1) #define maxn 200005 #define name "Passport" using namespace std; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); long long GetRandom(long long l, long long r) { return uniform_int_distribution<long long> (l, r)(rng); } int n,q; int dpl[2505][2505],dpr[2505][2505]; pair<int,int> a[maxn]; int f[2505][2505],xd[2505][2505]; int tinh(int d,int c) { if(d>c) return 1e9; if(d==1&&c==n) return 0; if(xd[d][c]==1) return f[d][c]; xd[d][c]=1; int val=1e9; int u=dpl[d][c]; val=min(val,tinh(u,c)+1); u=dpr[d][c]; val=min(val,tinh(d,u)+1); val=min({val,tinh(d+1,c),tinh(d,c-1)}); if(d==c) val=min(val,tinh(a[d].first,a[d].second)+1); f[d][c]=val; return f[d][c]; } void sub3() { for(int i=1;i<=n;i++) { dpl[i][i]=a[i].first; dpr[i][i]=a[i].second; for(int j=i+1;j<=n;j++) { dpl[i][j]=dpl[i][j-1]; if(dpl[i][j]>a[j].first) { dpl[i][j]=a[j].first; } dpr[i][j]=dpr[i][j-1]; if(dpr[i][j]<a[j].second) { dpr[i][j]=a[j].second; } } } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) f[i][j]=1e9; } while(q--) { int x; cin >> x; int val=tinh(x,x); if(val>n) cout<<-1<<'\n'; else cout<<val<<'\n'; } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); if(fopen(name".inp","r")) { freopen(name".inp","r",stdin); freopen(name".out","w",stdout); } cin >> n; for(int i=1;i<=n;i++) { cin >> a[i].first >> a[i].second; } cin >> q; if(n<=2500)sub3(); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 8536 KB | Output is correct |
2 | Correct | 1 ms | 8536 KB | Output is correct |
3 | Correct | 1 ms | 8536 KB | Output is correct |
4 | Incorrect | 24 ms | 4564 KB | Output isn't correct |
5 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 8540 KB | Output is correct |
2 | Correct | 1 ms | 8540 KB | Output is correct |
3 | Correct | 1 ms | 8536 KB | Output is correct |
4 | Correct | 1 ms | 8536 KB | Output is correct |
5 | Correct | 1 ms | 8540 KB | Output is correct |
6 | Correct | 1 ms | 8540 KB | Output is correct |
7 | Incorrect | 1 ms | 8536 KB | Output isn't correct |
8 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 8540 KB | Output is correct |
2 | Correct | 1 ms | 8540 KB | Output is correct |
3 | Correct | 1 ms | 8536 KB | Output is correct |
4 | Correct | 1 ms | 8536 KB | Output is correct |
5 | Correct | 1 ms | 8540 KB | Output is correct |
6 | Correct | 1 ms | 8540 KB | Output is correct |
7 | Incorrect | 1 ms | 8536 KB | Output isn't correct |
8 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 8540 KB | Output is correct |
2 | Correct | 1 ms | 8540 KB | Output is correct |
3 | Correct | 1 ms | 8536 KB | Output is correct |
4 | Correct | 1 ms | 8536 KB | Output is correct |
5 | Correct | 1 ms | 8540 KB | Output is correct |
6 | Correct | 1 ms | 8540 KB | Output is correct |
7 | Incorrect | 1 ms | 8536 KB | Output isn't correct |
8 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 8536 KB | Output is correct |
2 | Correct | 1 ms | 8536 KB | Output is correct |
3 | Correct | 1 ms | 8536 KB | Output is correct |
4 | Incorrect | 24 ms | 4564 KB | Output isn't correct |
5 | Halted | 0 ms | 0 KB | - |