提出 #27521138
ソースコード 拡げる
#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
#include<stack>
#include<algorithm>
#include<map>
#include<set>
#include<unordered_map>
#include<random>
#include<chrono>
#include<deque>
#include<cassert>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<vector>
#define fi first
#define se second
#define pb push_back
#define mp std::make_pair
#define ulf Useful_little_function
#define abs ccf
#define inline __attribute__((always_inline))inline
#define INF (0x3f3f3f3f)
#define INT_INF (2147483647)
#define LLINF (0x3f3f3f3f3f3f3f3fll)
#define LL_INF (9223372036854775807)
#define memset __builtin_memset
#define popcount __builtin_popcount
std::mt19937 rnd(std::chrono::system_clock::now().time_since_epoch().count());
typedef long long ll;
typedef std::pair<int,int> pii;
typedef unsigned int uint;
typedef unsigned long long ull;
inline void file(){freopen(".in","r",stdin);freopen(".out","w",stdout);}
namespace IO{
#define BUF_SIZE (1<<16)
#define OUT_SIZE (1<<16)
bool IOerror=0;
inline char nc(){static char buf[BUF_SIZE],*p1=buf+BUF_SIZE,*pend=buf+BUF_SIZE;if(p1==pend){p1=buf;pend=buf+fread(buf,1,BUF_SIZE,stdin);if(pend==p1)return IOerror=1,-1;}return *p1++;}
inline bool blank(char ch){return ch==' '||ch=='\n'||ch=='\r'||ch=='\t';}
inline void read(int &x){bool sign=0;char ch=nc();x=0;for(;blank(ch);ch=nc());if(IOerror)return;if(ch=='-')sign=1,ch=nc();for(;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';if(sign)x=-x;}
inline void read(ll &x){bool sign=0;char ch=nc();x=0;for(;blank(ch);ch=nc());if(IOerror)return;if(ch=='-')sign=1,ch=nc();for(;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';if(sign)x=-x;}
inline void read(double &x){bool sign=0;char ch=nc();x=0;for(;blank(ch);ch=nc());if(IOerror)return;if(ch=='-')sign=1,ch=nc();for(;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';if(ch=='.'){double tmp=1;ch=nc();for(;ch>='0'&&ch<='9';ch=nc())tmp/=10.0,x+=tmp*(ch-'0');}if(sign)x=-x;}
inline void read(char *s){char ch=nc();for(;blank(ch);ch=nc());if(IOerror)return;for(;!blank(ch)&&!IOerror;ch=nc())*s++=ch;*s=0;}
inline void read(char &c){for(c=nc();blank(c);c=nc());if(IOerror){c=-1;return;}}
struct Ostream_fwrite{
char *buf,*p1,*pend;
Ostream_fwrite(){buf=new char[BUF_SIZE];p1=buf;pend=buf+BUF_SIZE;}
inline void out(char ch){if(p1==pend){fwrite(buf,1,BUF_SIZE,stdout);p1=buf;}*p1++=ch;}
inline void print(int x){static char s[15],*s1;s1=s;if(!x)*s1++='0';if(x<0)out('-'),x=-x;while(x)*s1++=x%10+'0',x/=10;while(s1--!=s)out(*s1);}
inline void println(int x){print(x);out('\n');}
inline void print(ll x){static char s[25],*s1;s1=s;if(!x)*s1++='0';if(x<0)out('-'),x=-x;while(x)*s1++=x%10+'0',x/=10;while(s1--!=s)out(*s1);}
inline void println(ll x){print(x);out('\n');}
inline void print(double x,int y){//y<18
static ll mul[]={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000,10000000000LL,100000000000LL,1000000000000LL,10000000000000LL,100000000000000LL,1000000000000000LL,10000000000000000LL,100000000000000000LL};
if(x<-1e-12)out('-'),x=-x;x*=mul[y];ll x1=(ll)floor(x);if(x-floor(x)>=0.5)++x1;ll x2=x1/mul[y],x3=x1-x2*mul[y];print(x2);if(y>0){out('.');for(size_t i=1;i<y&&x3*mul[i]<mul[y];out('0'),++i);print(x3);}
}
inline void println(double x,int y){print(x,y);out('\n');}
inline void print(char *s){while(*s)out(*s++);}
inline void println(char *s){while(*s)out(*s++);out('\n');}
inline void flush(){if(p1!=buf){fwrite(buf,1,p1-buf,stdout);p1=buf;}}
~Ostream_fwrite(){flush();}
}Ostream;
inline void print(int x){Ostream.print(x);}
inline void println(int x){Ostream.println(x);}
inline void print(char x){Ostream.out(x);}
inline void println(char x){Ostream.out(x);Ostream.out('\n');}
inline void print(ll x){Ostream.print(x);}
inline void println(ll x){Ostream.println(x);}
inline void print(double x,int y){Ostream.print(x,y);}
inline void println(double x,int y){Ostream.println(x,y);}
inline void print(char *s){Ostream.print(s);}
inline void println(char *s){Ostream.println(s);}
inline void println(){Ostream.out('\n');}
inline void flush(){Ostream.flush();}
#undef OUT_SIZE
#undef BUF_SIZE
}using namespace IO;
namespace Little_function{
inline int abs(int x){return x<0?-x:x;}
inline ll abs(ll x){return x<0?-x:x;}
inline double abs(double x){return x<0?-x:x;}
inline int max(const int &a,const int &b){return a>b?a:b;}
inline ll max(const ll &a,const ll &b){return a>b?a:b;}
inline double max(const double &a,const double &b){return a>b?a:b;}
inline int min(const int &a,const int &b){return a<b?a:b;}
inline ll min(const ll &a,const ll &b){return a<b?a:b;}
inline double min(const double &a,const double &b){return a<b?a:b;}
inline void swap(int &x,int &y){x^=y^=x^=y;}
inline void swap(ll &x,ll &y){x^=y^=x^=y;}
inline void swap(double &x,double &y){double t=x;x=y,y=t;}
inline int madd(const int &a,const int &b,const int &p){return (a+b)%p;}
inline int mdel(const int &a,const int &b,const int &p){return (a-b<0?a-b+p:a-b);}
int gcd(int a,int b){return !b?a:gcd(b,a%b);}
ll gcd(ll a,ll b){return !b?a:gcd(b,a%b);}
}using namespace Little_function;
struct Stack{
#define N (10013)
int s[N],t;
inline void clear(){t=0;}
Stack(){clear();}
inline void push(int x){s[++t]=x;}
inline void pop(){--t;}
inline int top(){return s[t];}
inline bool empty(){return !t;}
#undef N
};
struct Queue{
#define N (10013)
int q[N],h,t;
inline void clear(){q[h=t=1]=0;}
Queue(){clear();}
inline void push(int x){q[madd(t,1,N)]=x;}
inline void push_front(int x){q[mdel(h,1,N)]=x;}
inline void pop(){madd(h,1,N);}
inline void pop_back(){mdel(t,1,N);}
inline int front(){return q[h];}
inline int back(){return q[t];}
inline int ffront(){return q[madd(h,1,N)];}
inline int bback(){return q[mdel(t,1,N)];}
inline bool empty(){return madd(t,1,N)==h;}
#undef N
};
template<class T>struct RP_Heap{
#define MAXN 10013
#define MAXM 10013
#define Log_Phi_N 29
struct ListNode;
struct Node{T val;int rank;Node *l,*r,*fa;ListNode *p;Node(){}Node(T _val,int _rank=0,Node* _l=0,Node* _r=0,Node* _fa=0):val(_val),rank(_rank),l(_l),r(_r),fa(_fa){}}t[MAXN+2],*p[MAXN+2],*min,*bucket[Log_Phi_N+1];
int cnt,siz;bool has_min;
struct ListNode{Node *ptr;ListNode *pre,*nxt;};
struct List{
ListNode* head;
List(){head=new ListNode();head->ptr=NULL;head->nxt=head;head->pre=head;}
inline void insert(Node* _ptr){ListNode* u=new ListNode();u->ptr=_ptr;u->pre=head;u->nxt=head->nxt;head->nxt->pre=u;head->nxt=u;_ptr->p=u;}
inline void remove(ListNode* u){u->pre->nxt=u->nxt;u->nxt->pre=u->pre;u->ptr->p=NULL;delete u;}
}list;
RP_Heap(){for(int i=0;i<MAXN;i++) p[i]=&t[i];has_min=0;memset(bucket,0,sizeof(bucket));}
inline Node* new_Node(T v){return (&(*p[cnt++]=Node(v,0,NULL,NULL,NULL)));}
inline void swap(Node* &x,Node* &y){ Node* temp=x;x=y;y=temp; }
inline Node* link(Node* u,Node* v){if(v->val<u->val) swap(u,v);v->r=u->l;if(v->r)v->r->fa=v;u->l=v;v->fa=u;u->rank++;return u;}
inline Node* update_min(Node* u){if(!has_min||u->val<min->val)min=u,has_min=1;return u;}
inline Node* push(T _val){Node* u=new_Node(_val);list.insert(update_min(u));siz++;return u;}
inline T top(){return min->val;}
inline int size(){return siz;}
inline bool empty(){return siz==0;}
inline void pop(){
siz--;list.remove(min->p);has_min=0;int rk;Node *next_node,*u;ListNode *first=list.head->nxt;
for(u=min->l;u;u=next_node) next_node=u->r,u->fa=u->r=NULL,rk=u->rank,bucket[rk]?(list.insert(update_min(link(u,bucket[rk]))),bucket[rk]=NULL):bucket[rk]=u;
for(ListNode *i=first,*next_node;i!=list.head;i=next_node) u=i->ptr,rk=u->rank,next_node=i->nxt,list.remove(i),bucket[rk]?(list.insert(update_min(link(u,bucket[rk]))),bucket[rk]=NULL):bucket[rk]=u;
for(int i=0;i<=Log_Phi_N;i++)if(bucket[i])list.insert(update_min(bucket[i])),bucket[i]=NULL;
}
inline void modify(Node* u,T key){
u->val=key;if(u->fa==NULL) return update_min(u);
if(u->l) u->rank=u->l->rank+1;else u->rank=0;if(u->r) u->r->fa=u->fa;if(u==u->fa->l) u->fa->l=u->r;else u->fa->r=u->r;
int temp,lrk,rrk;
for(Node* v=u->fa;v;v=v->fa){
lrk=v->l?v->l->rank:-1,rrk=v->r?v->r->rank:-1,temp=max(lrk,rrk)+(abs(lrk-rrk)<=1?1:0);
if(temp==v->rank)break;
v->rank=temp;
}
u->fa=u->r=NULL,list.insert(update_min(u));
}
#undef MAXN
#undef MAXM
#undef Log_Phi_N
};
namespace ST{
const int N=100+13,logN=21;
int f[N][logN];
inline void init(int n){
int k=log(n)/log(2)+1;
for(int j=1;j<=k;j++)
for(int i=1;i+(1<<j)-1<=n;i++) f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
}
inline int query(int L,int R){int k=log(R-L+1)/log(2);return max(f[L][k],f[R-(1<<k)+1][k]);}
}
namespace Union{
const int N=100+13;
int fa[N];
inline void init(int n){for(int i=1;i<=n;++i) fa[i]=i;}
inline int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}
inline void merge(int u,int v){int x=find(u),y=find(v);if(x!=y)fa[x]=y;}
inline bool query(int u,int v){return find(u)==find(v);}
}
namespace Gauss{
const int N=100+13;
const double eps=1e-6;
double a[N][N];
inline bool Gauss(double *ans,int n){
for(int i=1;i<=n;++i){
int r=i;
for(int j=i+1;j<=n;++j)
if(abs(a[r][i])>=abs(a[j][i])) r=j;
if(abs(a[r][i])<eps) return 0;
if(i!=r) std::swap(a[i],a[r]);
double div=a[i][i];
for(int j=i;j<=n+1;++j) a[i][j]/=div;
for(int j=i+1;j<=n;++j){
div=a[j][i];
for(int k=i;k<=n+1;++k) a[j][k]-=a[i][k]*div;
}
}
ans[n]=a[n][n+1];
for(int i=n-1;i>=1;--i){
ans[i]=a[i][n+1];
for(int j=i+1;j<=n;++j) ans[i]-=a[i][j]*ans[j];
}
return 1;
}
}
namespace qwaszx{
const int N=100;
ll big_phi[N],big_mju[N],phi[N+4],mju[N+4];int prime[N];bool vis[N+4];int cnt,t;
inline ll sum_id(ll n){return n*(n+1)/2;}
inline ll sum_1(int n){return n;}
inline ll sum_e(int n){return 1;}
inline void init(){
phi[1]=1,mju[1]=1;
for(int i=2;i<=N;++i){
if(!vis[i]) prime[++cnt]=i,mju[i]=-1,phi[i]=i-1;
for(int j=1;j<=cnt&&i*prime[j]<=N;++j){
vis[i*prime[j]]=1;
if(i%prime[j]==0){mju[i*prime[j]]=0,phi[i*prime[j]]=phi[i]*prime[j];break;}
mju[i*prime[j]]=mju[i]*-1,phi[i*prime[j]]=phi[i]*(prime[j]-1);
}
}
for(int i=1;i<=N;++i) mju[i]+=mju[i-1],phi[i]+=phi[i-1];
}
ll sum_phi(int n){
if(n<=N) return phi[n];
if(big_phi[t/n]) return big_phi[t/n];
ll c=sum_id(n);
for(ll l=2,r;l<=n;l=r+1) r=n/(n/l),c-=(sum_1(r)-sum_1(l-1))*sum_phi(n/l);
return big_phi[t/n]=c;
}
ll sum_mju(int n){
if(n<=N) return mju[n];
if(big_mju[t/n]) return big_mju[t/n];
ll c=sum_e(n);
for(ll l=2,r;l<=n;l=r+1) r=n/(n/l),c-=(sum_1(r)-sum_1(l-1))*sum_mju(n/l);
return big_mju[t/n]=c;
}
}
const int mod=1e9+7;
namespace Useful_little_function{
inline void Oninv(int *inv,int n,int p=0){if(!p)p=::mod;inv[1]=1;for(int i=2;i<=n;++i) inv[i]=(ll)(p-p/i)*inv[p%i]%p;}
const int NN=100+13;
struct Matrix{
int h,w,d[NN][NN];
Matrix(){memset(d,0,sizeof d);}
Matrix operator *(const Matrix &A)const{
Matrix C;C.h=h,C.w=A.w;
for(int i=1;i<=h;++i)
for(int j=1;j<=A.w;++j)
for(int k=1;k<=w;++k)
C.d[i][j]=(C.d[i][j]+(ll)d[i][k]*A.d[k][j]%mod)%mod;
return C;
}
};
inline Matrix qpow(Matrix A,int k){Matrix S=A;--k;for(;k;k>>=1,A=A*A)if(k&1)S=S*A;return S;}
inline int qpow(int a,int k,int p=0){if(!p)p=::mod;int s=1;for(;k;k>>=1,a=(ll)a*a%p)if(k&1)s=(ll)s*a%p;return s;}
inline int invv(int a,int p=0){if(!p)p=::mod;return qpow(a,p-2,p);}
inline ll mmul(ll a,ll k,ll p){ll s=0;for(;k;k>>=1,a=(a+a)%p)if(k&1)s=(s+a)%p;return s;}
const int MM=63;
struct Onbase{
int p[MM];
inline void insert(ll x){for(int i=MM-1;i>=0;--i){if((x>>i)&1){if(!p[i]){p[i]=x;break;}x^=p[i];if(!x) return;}}}
inline ll query(){ll res=0;for(int i=MM-1;i>=0;--i)if((res^p[i])>res) res^=p[i];return res;}
};
}using namespace ulf;
namespace Miller_Rabin{
int prm[10]={2,3,5,7,11,13,17,19,23,29};
inline int mul(int a,int k,int p){int s=0;for(;k;k>>=1,a=a*2%p)if(k&1)s=(s+a)%p;return s;}
inline bool isprime(ll x){
if(x==2) return 1;
if(x<2||!(x&1)) return 0;
ll s=0,t=x-1;
while(!(t&1)) ++s,t>>=1;
for(int i=0;i<10&&prm[i]<x;++i){
ll b=qpow((ll)prm[i],t,x);
for(int j=1;j<=s;++j){
ll k=mul(b,b,x);
if(k==1&&b!=1&&b!=x-1) return 0;
b=k;
}
if(b!=1) return 0;
}
return 1;
}
}using Miller_Rabin::isprime;
namespace Maxflow{
const int N=100+13;
struct Edge{int u,v,w,nxt;}e[N*5];
int n,m,s=N-3,t=N-2,h[N],tot=1;
inline void clear(){h[s]=h[t]=0;tot=1;}
inline void add(int u,int v,int w){
e[++tot]=(Edge){u,v,w,h[u]};h[u]=tot;
e[++tot]=(Edge){v,u,0,h[v]};h[v]=tot;
}
int dep[N],cur[N];
bool vis[N];
inline bool bfs(){
memset(dep,0x7f,sizeof(dep));
memcpy(cur,h,sizeof(h));
memset(vis,0,sizeof(vis));
std::queue<int>q;
q.push(t),dep[t]=0,vis[t]=1;
while(!q.empty()){
int u=q.front();
q.pop();
for(int i=h[u];i;i=e[i].nxt){
int v=e[i].v,w=e[i^1].w;
if(!vis[v]&&w) dep[v]=dep[u]+1,vis[v]=1,q.push(v);
}
}
return vis[s];
}
ll dfs(int u,ll minw){
if(u==t||!minw) return minw;
ll f,flow=0;
for(int &i=cur[u];i;i=e[i].nxt){
int v=e[i].v,w=e[i].w;
if(dep[u]==dep[v]+1&&(f=dfs(v,min(minw,(ll)w)))){
minw-=f,flow+=f,e[i].w-=f,e[i^1].w+=f;
if(!minw) break;
}
}
return flow;
}
inline ll dinic(){
ll flow=0;
while(bfs()) flow+=dfs(s,INF);
return flow;
}
}
namespace Math{
const int N=100+13;
bool b[N];
inline void Onshai(int *prm,int &pcnt,int n){
for(int i=2;i<=n;++i){
if(!b[i]) prm[++pcnt]=i;
for(int j=1;j<=pcnt&&i*prm[j]<=n;++j){
b[i*prm[j]]=1;
if(i%prm[j]==0) break;
}
}
}
void exgcd(int a,int b,int &x,int &y){if(!b) return x=1,y=0,void();exgcd(b,a%b,y,x);y-=(a/b)*x;}
void exgcd(ll a,ll b,ll &x,ll &y){if(!b) return x=1,y=0,void();exgcd(b,a%b,y,x);y-=(a/b)*x;}
inline ll crt(ll *a,ll *b,int n){
ll sum=1,res=0;
for(int i=1;i<=n;++i) sum*=a[i];
for(int i=1;i<=n;++i){
ll x,y,tmp=sum/a[i];
ll g=gcd(tmp,(ll)a[i]);exgcd(tmp,a[i],x,y);
x=(x%a[i]+a[i])%a[i];
res+=b[i]*tmp*x;
}
return res;
}
inline int phi(int x){
int ans=x,n=sqrt(x);
for(int i=2;i<=n;++i)
if(x%i==0){ans=ans/i*(i-1);while(x%i==0) x/=i;}
if(x>1) ans=ans/x*(x-1);
return ans;
}
inline ll excrt(ll *a,ll *b,int n){
for(int i=2;i<=n;++i){
ll g=gcd(a[i-1],a[i]),x,y;
exgcd(a[i-1]/g,a[i]/g,x,y);
a[i]*=a[i-1]/g;
b[i]=(mmul(mmul((b[i]-b[i-1])/g,(x%a[i]+a[i])%a[i],a[i]),a[i-1],a[i])+b[i-1])%a[i];
b[i]=(b[i]+a[i])%a[i];
}
return b[n];
}
inline int BSGS(int a,int b,int p){
std::unordered_map<int,int> ha;ha.clear();
int t=sqrt(p)+1;int tmp=1;
for(int i=0;i<t;++i) ha[(ll)b*tmp%p]=i+1,tmp=(ll)tmp*a%p;
a=tmp;
for(int i=1;i<=t;++i){
tmp=qpow(a,i,p);
if(ha[tmp]) return i*t-ha[tmp]+1;
}
return -1;
}
}
int main(){
//file();
char s[5][5];
read(s[1]+1),read(s[2]+1);
int cnt=((s[1][1]=='#')+(s[1][2]=='#')+(s[2][1]=='#')+(s[2][2]=='#'));
if(cnt==2){
if(s[1][1]=='#'&&s[2][2]=='#') println("No");
else if(s[1][2]=='#'&&s[2][1]=='#') println("No");
else println("Yes");
}
else println("Yes");
return 0;
}
提出情報
提出日時
2021-11-27 21:10:35+0900
問題
A - First Grid
ユーザ
cunzai_zsy0531
言語
C++ (Clang 10.0.0)
得点
100
コード長
15696 Byte
結果
AC
実行時間
9 ms
メモリ
3012 KiB
コンパイルエラー
./Main.cpp:43:82: warning: for loop has empty body [-Wempty-body]
inline void read(int &x){bool sign=0;char ch=nc();x=0;for(;blank(ch);ch=nc());if(IOerror)return;if(ch=='-')sign=1,ch=nc();for(;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';if(sign)x=-x;}
^
./Main.cpp:43:82: note: put the semicolon on a separate line to silence this warning
./Main.cpp:44:81: warning: for loop has empty body [-Wempty-body]
inline void read(ll &x){bool sign=0;char ch=nc();x=0;for(;blank(ch);ch=nc());if(IOerror)return;if(ch=='-')sign=1,ch=nc();for(;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';if(sign)x=-x;}
^
./Main.cpp:44:81: note: put the semicolon on a separate line to silence this warning
./Main.cpp:45:85: warning: for loop has empty body [-Wempty-body]
inline void read(double &x){bool sign=0;char ch=nc();x=0;for(;blank(ch);ch=nc());if(IOerror)return;if(ch=='-')sign=1,ch=nc();for(;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';if(ch=='.'){double tmp=1;ch=nc();for(;ch>='0'&&ch<='9';ch=nc())tmp/=10.0,x+=tmp*(ch-'0');}if(sign)x=-x;}
^
./Main.cpp:45:85: note: put the semicolon on a separate line to silence this warning
./Main.cpp:46:67: warning: for loop has empty body [-Wempty-body]
inline void read(char *s){char ch=nc();for(;blank(ch);ch=nc());if(IOerror)return;for(;!blank(ch)&&!IOerror;ch=nc())*s++=ch;*s=0;}
^
./Main.cpp:46:67: note: put the semicolon on a separate line to silence this warning
./Main.cpp:47:58: warning: for loop has empty body [-Wempty-body]
inline void read(char &c){for(c=nc();blank(c);c=nc());if(IOerror){c=-1;return;}}
^
./Main.cpp:47:58: note: put the semicolon on a separate line to silence this warning
./Main.cpp:58:201: warning: for loop has empty bo...
ジャッジ結果
セット名
Sample
All
得点 / 配点
0 / 0
100 / 100
結果
セット名
テストケース
Sample
sample_01.txt, sample_02.txt
All
sample_01.txt, sample_02.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt
ケース名
結果
実行時間
メモリ
sample_01.txt
AC
9 ms
2764 KiB
sample_02.txt
AC
3 ms
2860 KiB
test_01.txt
AC
2 ms
2864 KiB
test_02.txt
AC
2 ms
2772 KiB
test_03.txt
AC
2 ms
2820 KiB
test_04.txt
AC
2 ms
2976 KiB
test_05.txt
AC
2 ms
2900 KiB
test_06.txt
AC
2 ms
2904 KiB
test_07.txt
AC
2 ms
2772 KiB
test_08.txt
AC
2 ms
2760 KiB
test_09.txt
AC
2 ms
3012 KiB
test_10.txt
AC
2 ms
2944 KiB
test_11.txt
AC
2 ms
2908 KiB