比赛 | 20120612 | 评测结果 | AAAAA |
---|---|---|---|
题目名称 | 灯光 | 最终得分 | 100 |
用户昵称 | feng | 运行时间 | 0.000 s |
代码语言 | C++ | 内存使用 | 0.00 MiB |
提交时间 | 2012-06-12 18:57:32 | ||
- #include <iostream>
- #include <fstream>
- using namespace std;
- int main()
- {
- ifstream fin("partya.in");
- ofstream fout("partya.out");
- int n,c,kai[101],guan[101],lk=0,lg=0,now[101],count=0,res[17][101];
- fin>>n>>c;
- int x;
- fin>>x;
- for (;x!=-1;)
- {
- lk++;
- kai[lk]=x;
- fin>>x;
- }
- fin>>x;
- for (;x!=-1;)
- {
- lg++;
- guan[lg]=x;
- fin>>x;
- }
- for (int i=1;i<=n;i++)
- now[i]=1;
- for (int i=1;i>=0;i--)
- {
- for (int s=1;s<=n;s++)
- now[s]=1-now[s];
- for (int j=1;j>=0;j--)
- {
- for (int s=1;s<=n;s+=2)
- now[s]=1-now[s];
- for (int k=1;k>=0;k--)
- {
- for (int s=2;s<=n;s+=2)
- now[s]=1-now[s];
- for (int t=1;t>=0;t--)
- {
- for (int s=1;s<=n;s+=3)
- now[s]=1-now[s];
- bool okay=true;
- int ss=i+j+k+t;
- if ((ss>c)||((ss%2)!=(c%2))) continue;
- for (int s=1;s<=lk;s++)
- if (now[kai[s]]==0)
- {
- okay=false;
- break;
- }
- for (int s=1;s<=lg;s++)
- if (now[guan[s]]==1)
- {
- okay=false;
- break;
- }
- if (okay)
- {
- count++;
- for (int s=1;s<=n;s++)
- res[count][s]=now[s];
- }
- }
- }
- }
- }
- for (int i=1;i<=count;i++)
- {
- for (int j=i+1;j<=count;j++)
- {
- bool big=false;
- for (int k=1;k<=n;k++)
- {
- if (res[i][k]!=res[j][k])
- {
- big=(res[i][k]>res[j][k])?true:false;
- break;
- }
- }
- if (big)
- {
- int tmp;
- for (int k=1;k<=n;k++)
- {
- tmp=res[i][k];
- res[i][k]=res[j][k];
- res[j][k]=tmp;
- }
- }
- }
- }
- for (int i=1;i<=count;i++)
- {
- for (int j=1;j<=n;j++)
- fout<<res[i][j];
- fout<<endl;
- }
- if (count==0) fout<<"IMPOSSIBLE"<<endl;
- return 0;
- }