まずざっと問題を読むのですが、英語なので理解が進まない。ProblemAからやろうと思って、すぐに読んでしまい、あまり簡単だったので他の問題を読む前にさっと完成。ここまで7分弱。
あとはB,C,D,Eと問題を読んだのですが、ぱっと読んでもよくわからない…。そうこうしているうちに30分少々経過し、何とかBの題意をつかんだので、丁寧に組み上げる。組み終わって1時間弱。
C,D,Eのうち、一番意味がわかりそうだったのがEだったので、Eの意味を丁寧に理解。理解するのに20分かかりましたが、何とか理解して作成、1時間40分頃完成しました。
ここでA,Bをロックしてハックに移ろうと思ったのですが、私のEがハックされたという知らせ。見てみると「時間かかりすぎ」のハック結果が・・・。まぁ、効率が悪い組み方に鳴っているからですね。とはいっても、残りの20分で組み直せるような気もしなかったので、ひとまず放っておき、ハックに向かいました。
C++の人が多いのですが、まだまだC++は読めず、結局ハックはone missのみで終わりました。
次回のRound#64は3/27AM1:00〜。楽しくやってみようかと思います。
問題はこちらです。
また、私の解答例ソース(C)を載せておきます。恥ずかしいですが…。
A.Young Physicist
#include<stdio.h>
int main(void){
int force[3],sum[3]={0,0,0};
int i,n,j;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d %d %d",&force[0],&force[1],&force[2]);
for(j=0;j<3;j++) sum[j]+=force[j];
}
if(sum[0]*sum[0]+sum[1]*sum[1]+sum[2]*sum[2]==0) puts("YES");
else puts("NO");
return 0;
}
B.Bets
#include<stdio.h>
#define NUM 100
typedef struct{
int st;
int go;
int t;
int c;
}runner;
int main(void){
int i,j,k,n,m;
runner per[NUM],max;
int profit=0,maximum,flg;
scanf("%d %d",&m,&n);
for(i=0;i<n;i++)
scanf("%d %d %d %d",&per[i].st,&per[i].go,&per[i].t,&per[i].c);
for(i=1;i<=m;i++){
maximum=0;
flg=0;
for(j=0;j<n;j++){
if(i>=per[j].st && i<=per[j].go){
if(flg==0){
flg=1;
max=per[j];
maximum=max.c;
}else if(max.t>per[j].t){
max=per[j];
maximum=max.c;
}
}
}
profit+=maximum;
}
printf("%d\n",profit);
return 0;
}
E.Subsegments
#include<stdio.h>
#include<stdlib.h>
int comp(const void *p1, const void *p2){
int n1,n2;
n1=*((const int *)p1);
n2=*((const int *)p2);
return n2-n1;
}
int main(void){
int n,k;
int i,j;
int *array,*sub,tmp,flg;
scanf("%d %d",&n,&k);
array=(int *)calloc(n,sizeof(int));
sub=(int *)calloc(k,sizeof(int));
for(i=0;i<n;i++) scanf("%d",array+i);
for(i=0;i<=n-k;i++){
for(j=0;j<k;j++) *(sub+j)=*(array+i+j);
qsort(sub,k,sizeof(int),comp);
for(flg=0,tmp=sub[0],j=1;j<k;j++){
if(tmp==sub[j]){
flg=1;
if(j==k-1){
printf("Nothing\n");
break;
}
continue;
}else{
if(flg==0){
printf("%d\n",tmp);
break;
}else{
tmp=sub[j];
flg=0;
if(j==k-1){
printf("%d\n",tmp);
break;
}
continue;
}
}
}
}
free(sub);
free(array);
return 0;
}
0 件のコメント:
コメントを投稿