結果
問題 | No.274 The Wall |
ユーザー |
|
提出日時 | 2020-09-11 02:43:42 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 479 ms / 2,000 ms |
コード長 | 3,243 bytes |
コンパイル時間 | 2,156 ms |
コンパイル使用メモリ | 184,736 KB |
実行使用メモリ | 132,480 KB |
最終ジャッジ日時 | 2024-06-22 02:41:13 |
合計ジャッジ時間 | 4,220 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 22 |
ソースコード
#include<bits/stdc++.h>using namespace std;#define rep(i,n) for(ll i=0;i<n;i++)#define repl(i,l,r) for(ll i=(l);i<(r);i++)#define per(i,n) for(ll i=n-1;i>=0;i--)#define perl(i,r,l) for(ll i=r-1;i>=l;i--)#define fi first#define se second#define pb push_back#define ins insert#define pqueue(x) priority_queue<x,vector<x>,greater<x>>#define all(x) (x).begin(),(x).end()#define CST(x) cout<<fixed<<setprecision(x)#define vtpl(x,y,z) vector<tuple<x,y,z>>#define rev(x) reverse(x);using ll=long long;using vl=vector<ll>;using vvl=vector<vector<ll>>;using pl=pair<ll,ll>;using vpl=vector<pl>;using vvpl=vector<vpl>;const ll MOD=1000000007;const ll MOD9=998244353;const int inf=1e9+10;const ll INF=4e18;const ll dy[8]={1,0,-1,0,1,1,-1,-1};const ll dx[8]={0,-1,0,1,1,-1,1,-1};template<class T> inline bool chmin(T& a, T b) {if (a > b) {a = b;return true;}return false;}template<class T> inline bool chmax(T& a, T b) {if (a < b) {a = b;return true;}return false;}struct SCC{int n;vector<vector<int>> g,rg;vector<int> vs,cmp;vector<bool> used;SCC(int _n){n=_n;g=vector<vector<int>>(n);rg=g;cmp=vector<int>(n);used=vector<bool>(n);}void add_edge(int f, int t){g[f].push_back(t);rg[t].push_back(f);}int init(){rep(i,n)if(!used[i])dfs(i);int k=0;used=vector<bool>(n,false);per(i,n){if(!used[vs[i]]){rdfs(vs[i],k);k++;}}return k;}private:void dfs(int v){used[v]=true;rep(i,g[v].size()){if(!used[g[v][i]])dfs(g[v][i]);}vs.push_back(v);}void rdfs(int v, int k){used[v]=true;cmp[v]=k;rep(i,rg[v].size()){if(!used[rg[v][i]]){rdfs(rg[v][i],k);}}}};struct twoSAT{vector<bool> ans;twoSAT(int _n):n(_n),graph(2*_n),ans(_n){}void add_edge(int i,bool x,int j,bool y){//i=>j;if(!x)i+=n;if(!y)j+=n;graph.add_edge((i+n)%(2*n),j);graph.add_edge((j+n)%(2*n),i);}bool exe(){graph.init();rep(i,n){if(graph.cmp[i]==graph.cmp[i+n])return false;else if(graph.cmp[i]>graph.cmp[i+n])ans[i]=true;else ans[i]=false;}return true;}private:int n;SCC graph;};bool cross(ll a,ll b,ll c,ll d){return (a<=d&&c<=b)||(c<=b&&a<=d);}int main(){ll n,m;cin >> n >>m;m--;twoSAT g(n);vl x(n),y(n);rep(i,n)cin >> x[i] >> y[i];rep(i,n){repl(j,i+1,n){if(cross(x[i],y[i],x[j],y[j])){g.add_edge(i,0,j,0);}if(cross(m-y[i],m-x[i],x[j],y[j])){g.add_edge(i,1,j,0);}if(cross(x[i],y[i],m-y[j],m-x[j])){g.add_edge(i,0,j,1);}if(cross(m-y[i],m-x[i],m-y[j],m-x[j])){g.add_edge(i,1,j,1);}}}if(g.exe()){cout << "YES" <<endl;}else{cout << "NO" <<endl;}}