2399 Save Your Privacy!

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2399
各人のもつ個人情報のリストと流出した個人情報のリストを突き合わせてだれが流出させたかをチェックする問題。
個人情報を01のビット配列に変換してBit演算でOrとって情報量が増えなかったらその人。
二人以上や一人も候補がなければ-1.
簡単です。


#include<stdio.h>
#include<bitset>
void search(int n){
std::bitset<102> ps[102],ms;	
int m,p,ans,count=0;
for(int i=1;i<=n;i++){
	ps[i].reset();
	scanf("%d",&m);
	for(int j=0;j<m;j++){
		scanf("%d",&p);
		ps[i].set(p);
	}
}
scanf("%d",&m);
while(m--){
	scanf("%d",&p);
	ms.set(p);
}
for(int i=1;i<=n;i++){
	int s=ps[i].count();
	if(ps[i].count()==(ps[i]|ms).count()){
		ans=i;
		count++;
	}
	if(count>1)break;
}
if(count==1)printf("%d\n",ans);
else printf("-1\n");
}
int main(){
int n;
while(1){
	scanf("%d",&n);
	if(n==0)break;
	search(n);
}
}

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2012年07月10日 10:46