結果
問題 | No.274 The Wall |
ユーザー |
👑 ![]() |
提出日時 | 2019-09-16 17:37:44 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 543 ms / 2,000 ms |
コード長 | 3,562 bytes |
コンパイル時間 | 1,883 ms |
コンパイル使用メモリ | 185,624 KB |
実行使用メモリ | 395,520 KB |
最終ジャッジ日時 | 2024-06-22 02:30:12 |
合計ジャッジ時間 | 3,960 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 22 |
ソースコード
#include<bits/stdc++.h>using namespace std;#define ALL(a) (a).begin(),(a).end()#define ALLR(a) (a).rbegin(),(a).rend()#define spa << " " <<#define lfs <<fixed<<setprecision(10)<<#define test cout<<"test"<<endl;#define fi first#define se second#define MP make_pair#define PB push_back#define EB emplace_back#define rep(i,n,m) for(ll i = n; i < (ll)(m); i++)#define rrep(i,n,m) for(ll i = n - 1; i >= (ll)(m); i--)typedef long long ll;typedef long double ld;const ll MOD = 1e9+7;//const ll MOD = 998244353;const ll INF = 1e18;using P = pair<ll, ll>;template<typename T>void chmin(T &a,T b){if(a>b)a=b;}template<typename T>void chmax(T &a,T b){if(a<b)a=b;}void pmod(ll &a,ll b){a=(a+b)%MOD;}void pmod(ll &a,ll b,ll c){a=(b+c)%MOD;}void qmod(ll &a,ll b){a=(a*b)%MOD;}void qmod(ll &a,ll b,ll c){a=(b*c)%MOD;}ll median(ll a,ll b, ll c){return a+b+c-max({a,b,c})-min({a,b,c});}void ans1(bool x){if(x) cout<<"Yes"<<endl;else cout<<"No"<<endl;}void ans2(bool x){if(x) cout<<"YES"<<endl;else cout<<"NO"<<endl;}void ans3(bool x){if(x) cout<<"Yay!"<<endl;else cout<<":("<<endl;}template<typename T1,typename T2>void ans(bool x,T1 y,T2 z){if(x)cout<<y<<endl;else cout<<z<<endl;}template<typename T>void debug(vector<vector<T>>v,ll h,ll w){for(ll i=0;i<h;i++){cout<<v[i][0];for(ll j=1;j<w;j++)cout spa v[i][j];cout<<endl;}};void debug(vector<string>v,ll h,ll w){for(ll i=0;i<h;i++){for(ll j=0;j<w;j++)cout<<v[i][j];cout<<endl;}};template<typename T>void debug(vector<T>v,ll n){cout<<v[0];for(ll i=1;i<n;i++)cout spa v[i];cout<<endl;};template<typename T>vector<vector<T>>vec(ll x, ll y, T w){vector<vector<T>>v(x,vector<T>(y,w));return v;}ll gcd(ll x,ll y){ll r;while(y!=0&&(r=x%y)!=0){x=y;y=r;}return y==0?x:y;}template<typename T>void emp(map<T,ll>&m, T x){m.emplace(x,0).first->second++;}vector<ll>dx={1,0,-1,0,1,1,-1,-1};vector<ll>dy={0,1,0,-1,1,-1,1,-1};struct SCC{ll n;vector<vector<ll>>G,Gr;vector<ll>index;//各ノードが属する強連結成分の番号vector<ll>ret;//dfsに使うSCC(vector<vector<ll>>g):G(g),n(g.size()){index.assign(n,-1LL);build();}void build(){Gr.assign(n,vector<ll>());for(ll i=0;i<n;i++){for(ll j=0;j<G[i].size();j++){Gr[G[i][j]].push_back(i);}}for(ll i=0;i<n;i++)if(index[i]==-1)dfs1(i);fill(ALL(index),-1);ll cnt=0;reverse(ALL(ret));for(ll i=0;i<n;i++){if(index[ret[i]]==-1){dfs2(ret[i],cnt);cnt++;}}}void dfs1(ll k){index[k]=1;for(ll i=0;i<G[k].size();i++){if(index[G[k][i]]==-1)dfs1(G[k][i]);}ret.push_back(k);}void dfs2(ll k, ll idx){index[k]=idx;for(ll i=0;i<Gr[k].size();i++){if(index[Gr[k][i]]==-1)dfs2(Gr[k][i],idx);}}vector<ll>output(){return index;};};int main(){cin.tie(NULL);ios_base::sync_with_stdio(false);ll res=0,res1=INF,res2=-INF,buf=0;bool judge = true;ll n,m;cin>>n>>m;vector<vector<ll>>g(2*n);vector<ll>l(n),r(n);rep(i,0,n)cin>>l[i]>>r[i];rep(i,0,n)rep(j,i+1,n){if(l[i]<=r[j]&&r[i]>=l[j]){g[i].PB(j+n);g[j].PB(i+n);}if(m-1-l[i]<=l[j]&&m-1-r[i]>=r[j]){g[i+n].PB(j+n);g[j+n].PB(i+n);}if(l[i]<=m-1-l[j]&&r[i]>=m-1-r[j]){g[i].PB(j);g[j].PB(i);}if(m-1-r[i]<=m-1-l[j]&&m-1-l[i]>=m-1-r[j]){g[i+n].PB(j);g[j+n].PB(i);}}SCC scc(g);auto idx=scc.output();rep(i,0,n){if(idx[i]==idx[i+n])judge=false;}ans2(judge);return 0;}