結果
問題 | No.274 The Wall |
ユーザー |
|
提出日時 | 2016-07-11 15:53:59 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 35 ms / 2,000 ms |
コード長 | 1,756 bytes |
コンパイル時間 | 2,509 ms |
コンパイル使用メモリ | 182,204 KB |
実行使用メモリ | 34,688 KB |
最終ジャッジ日時 | 2024-06-22 02:10:03 |
合計ジャッジ時間 | 2,708 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 22 |
ソースコード
#include "bits/stdc++.h"using namespace std;#define FOR(i,j,k) for(int (i)=(j);(i)<(int)(k);++(i))#define rep(i,j) FOR(i,0,j)#define each(x,y) for(auto &(x):(y))#define mp make_pair#define all(x) (x).begin(),(x).end()#define debug(x) cout<<#x<<": "<<(x)<<endl#define smax(x,y) (x)=max((x),(y))#define smin(x,y) (x)=min((x),(y))#define MEM(x,y) memset((x),(y),sizeof (x))#define sz(x) (int)(x).size()typedef long long ll;typedef pair<int, int> pii;typedef vector<int> vi;typedef vector<ll> vll;template<class S, class T>void psort(vector<S> &u, vector<T> &v, bool isGreater=false){int n = (int)u.size();vector<pair<S, T>> vecP(n);for(int i = 0; i < n; ++i){vecP[i].first = u[i];vecP[i].second = v[i];}if(isGreater){sort(vecP.rbegin(), vecP.rend());} else{sort(vecP.begin(), vecP.end());}for(int i = 0; i < n; ++i){u[i] = vecP[i].first;v[i] = vecP[i].second;}}int main(){int N, M;while(cin >> N >> M){vi L(N), R(N);rep(i, N){scanf("%d%d", &L[i], &R[i]);R[i]++;int l = M - R[i], r = M - L[i];if(l < L[i]){L[i] = l;R[i] = r;}}psort(L, R);vector<vi> dp(N + 1, vi(M, -1));dp[0][0] = M;rep(i, N){rep(l, M)if(dp[i][l] >= l){int r = dp[i][l];if(l <= L[i] && R[i] <= r)smax(dp[i + 1][R[i]], r);int nl = M - R[i], nr = M - L[i];if(l <= nl && nr <= r)smax(dp[i + 1][l], nl);}}int ok = 0;rep(l, M)ok |= l<=dp[N][l];puts(ok ? "YES" : "NO");}}