結果
問題 |
No.2796 Small Matryoshka
|
ユーザー |
![]() |
提出日時 | 2025-01-25 17:48:42 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 849 bytes |
コンパイル時間 | 1,769 ms |
コンパイル使用メモリ | 172,180 KB |
実行使用メモリ | 14,836 KB |
最終ジャッジ日時 | 2025-01-25 17:49:18 |
合計ジャッジ時間 | 4,796 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 9 WA * 10 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); i++) typedef vector<int> VI; typedef vector<VI> VVI; typedef vector<long long> VL; typedef vector<VL> VVL; typedef long long LL; #define all(a) (a).begin(), (a).end() #define Yes(n) cout << ((n) ? "Yes" : "No" ) << endl #define ALL(a) (a).begin(),(a).end() #define pb push_back int A[200000]; int main() { int n;cin>>n; VVI R(n,VI(2)); rep(i,n){ cin>>R[i][0]>>R[i][1]; } sort(all(R)); rep(i,n){A[i]=-1;} A[0]=R[n-1][0]; int siz=0; for(int i=n-2;i>=0;i--){ if(A[siz]>=R[i][1]){siz++; A[siz]=R[i][1];} else if(A[0]<R[i][1]){} else{ int l=0,r=siz,t; while(r-l>1){ t=(r+l)/2; if(A[t]>=R[i][1]){l=t;} else{r=t;} } A[r]=max(A[r],R[i][0]); } } cout<<n-(siz+1)<<endl; }