比赛 |
至少完成十道练习 |
评测结果 |
AAAAAAAAAA |
题目名称 |
美丽的感觉 |
最终得分 |
100 |
用户昵称 |
Ostmbh |
运行时间 |
0.006 s |
代码语言 |
C++ |
内存使用 |
1.31 MiB |
提交时间 |
2017-05-21 08:58:43 |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=1000+10;
char A[maxn],B[maxn];
int fa[maxn],fb[maxn];
int ga[maxn],gb[maxn];
bool f[maxn][maxn]={0};
inline int abs(int x){
return x>=0?x:-x;
}
int main(){
freopen("card_.in","r",stdin);
freopen("card_.out","w",stdout);
int n;
scanf("%d",&n);
scanf("%s",A+1);
scanf("%s",B+1);
for(int i=1;i<=n;i++){
fa[i]=fa[i-1];
ga[i]=ga[i-1];
if(A[i]=='0')
fa[i]++;
else ga[i]++;
}
for(int i=1;i<=n;i++){
fb[i]=fb[i-1];
gb[i]=gb[i-1];
if(B[i]=='0')
fb[i]++;
else gb[i]++;
}
f[0][0]=1;
for(int i=0;i<=n;i++)
for(int j=0;j<=n;j++){
if(i==0&&j==0)
continue;
if((f[i-1][j]||f[i][j-1])&&abs(fa[i]+fb[j]-ga[i]-gb[j])<=1)
f[i][j]=1;
}
if(f[n][n])
puts("Accepted!");
else puts("Impossible!");
return 0;
}