はい。
Codeforces Round #406 (Div.2)
A. The Monster
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define sc2(a,b) scanf("%d %d",&a,&b)
int main(){
int a,b,c,d;
sc2(a,b);
sc2(c,d);
int x=b,y=d,ans=1e9+7;
rep(i,105){
if (x==y || x==d || (x-d>0 && (x-d)%c==0)) ans=min(ans,x);
if (y==b || (y-b>0 && (y-b)%a==0)) ans=min(ans,y);
x+=a; y+=c;
}
printf("%d\n",ans==1e9+7?-1:ans);
return 0;
}
bはaずつ増えるdはcずつ増える。同じ数なるときがあるかを調べる。なのでaの倍数+b、cの倍数+dを調べます。増え方の周期性が100よりは大きくならないはずなのでその範囲くらいを調べれば多分大丈夫だと思います。
B. Not Afraid
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define sc1(a) scanf("%d",&a)
#define sc2(a,b) scanf("%d %d",&a,&b)
bool a[10005], b[10005];
int main(){
int n,m,ans=0;
sc2(n,m);
rep (i,m) {
int f=1,k,w;
rep(j,10005) {a[j]=0; b[j]=0;}
sc1(k);
rep(j,k) {
sc1(w);
if (w>0) a[w]=1;
else b[abs(w)]=1;
if (a[abs(w)]==1 && b[abs(w)]==1) f=0;
}
ans+=f;
}
printf("%s\n",ans>0?"YES":"NO");
return 0;
問題文解読が難関。宇宙戦争でいろいろたくさん人が集まる。同グループ内に x,-x のようなのが1つも存在しないと裏切りの危険対策のために中止したほうがいいYESということらしいです。多分。。