hogloidのブログ

へなちょこ

Google Code Jam Qualification Round

GCJ出てました。

Problem A Bot Trust

簡単問題
ですが何故かきれいなコードが書けない症候群(時々なる)に陥ってしばらくコードを書いては消しを繰り返し、30分ぐらいでようやく書き終わる(これが時間制限ありのコンテストで起こると焦る)
普通にサンプルとSmallが通りLargeもAC

int main(){
	int T;scanf("%d",&T);
	FILE *fp=fopen("out.txt","w");
	REP(setn,T){
		int n;scanf("%d\n",&n);
		int time1=0,time2=0;
		int p=1,p2=1;
		REP(i,n){
			char c;int pl;scanf("%c %d\n",&c,&pl);
			if(c=='O'){
				time1+=abs(p-pl)+1;
				time1=max(time1,time2+1);
				p=pl;
			}else{
				time2+=abs(p2-pl)+1;
				time2=max(time2,time1+1);
				p2=pl;
			}
		}
		printf("Case #%d: %d\n",setn+1,max(time1,time2));
		fprintf(fp,"Case #%d: %d\n",setn+1,max(time1,time2));
	}
	return 0;
}

Problem B Magicka

まどマギとは関係ないみたい
やるだけ問題のはずなんですが英語が分からずしばらく放置して、もう一度チャレンジしたらあっさり通りました
コードは汚いので見せられません

Problem C Candy Splitting

2進数の計算が不自由な子供を騙す問題
2^NでSmallのみ通しました

int main(){
	int T;scanf("%d",&T);
	FILE* fp=fopen("out.txt","w");
	REP(setn,T){
		int N;scanf("%d",&N);
		vi nums(N);
		REP(i,N){
			scanf("%d",&nums[i]);
		}
		sort(ALL(nums));
		int maxbit=1<<N;
		int res=-1;
		REPN(bit,maxbit-1,1){
			int a=0,b=0,really=0;
			REP(i,N){
				if(bit>>i&1){
					really+=nums[i];
					a^=nums[i];
				}else{
					b^=nums[i];
				}
			}
			if(a==b)
				res=max(really,res);
		}
		if(res!=-1)
		fprintf(fp,"Case #%d: %d\n",setn+1,res);
		else fprintf(fp,"Case #%d: NO\n",setn+1);
	}
	return 0;
}

Problem D GoroSort

うーん、よく分からない
多分既にあるべき場所に置かれてる数を抑えて・・・ってやってくんだろうけど
N個のバラバラな要素があったとき全部あるべき場所に入る期待値から分からない
分かればコードは短そうだなあとか思いつつ諦める

結局55点でした 5396位なのでまだまだです
早くから登録してしまったためハンドルはMissileMeshです