제출 #1156934

#제출 시각아이디문제언어결과실행 시간메모리
1156934dnnndaExhibition (JOI19_ho_t2)C++20
0 / 100
0 ms328 KiB
#include<bits/stdc++.h> using namespace std; #define S second #define F first #define ll long long //#define int long long //#pragma GCC optimize("Ofast, unroll-loop") //#pragma GCC target("avx,avx2") #pragma GCC optimize("O3") const int inf=0x3f3f3f3f; const ll inff=0x3f3f3f3f3f3f3f3f; //const int X=1000000007; const int X=998244353; pair<int,int> p[100005]; int f[100005], id[100005], lb[100005], mx=0, mn=inf; signed main(){ ios::sync_with_stdio(0), cin.tie(0); int n, m; cin >> n >> m; for(int i=0 ; i<n ; i++) cin >> p[i].F >> p[i].S; for(int i=0 ; i<m ; i++) cin >> f[i]; for(int i=0 ; i<n ; i++) mn=min(mn,p[i].F); for(int i=0 ; i<m ; i++) mx=max(mx,f[i]); if(mx<mn){ cout << "0\n"; return 0; } sort(p,p+n,[](pair<int,int> a, pair<int,int> b){ if(a.S==b.S) return a.F<b.F; return a.S<b.S; }); sort(f,f+m); //for(int i=0 ; i<m ; i++) cout << f[i] << (i==m-1 ? '\n' : ' '); //for(int i=0 ; i<n ; i++) cout << p[i].F << ',' << p[i].S << ' '; //cout << '\n'; //f.erase(unique(f.begin(),f.end()),f.end()); lb[0]=id[0]=(lower_bound(f,f+m,p[0].F)-f); for(int i=1 ; i<n ; i++) lb[i]=lower_bound(f,f+m,p[i].F)-f; //for(int i=0 ; i<n ; i++) cout << id[i] << ' '; //cout << '\n'; vector<int> v{id[0]}; for(int i=1 ; i<n ; i++){ if(lb[i]==lb[i-1]&&id[i-1]+1<m&&f[id[i-1]+1]>=p[i].F) id[i]=id[i-1]+1; else id[i]=lb[i]; if(id[i]>v.back()) v.push_back(id[i]); else *lower_bound(v.begin(),v.end(),id[i])=id[i]; //for(int j:v) cout << j << ' '; //cout << '\n'; } cout << v.size() << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...