2011/08/14

Codeforces Beta Round #81 参戦記


大変悪い成績でした!

まず、Aを読んで解き始めました。一応組めたと思ってテストをしたのが0:20です。
ここで、辞書式にというのを見逃していたことに気づき、これを実装して提出したのが35分でした。ですが、残念なことに、丸め誤差のため、システムテストで落ちてしまいました。

他の問題は、次の理由で諦めました。
1. 難しい。
2. 問題文が長い。英語が苦手なのでこれはかなりしんどい。

もちろん、久々に0点で、ランクは403/1500でした。問題はこちら
誰ひとりとして全問正解がおらず、1100人近い人が一問も正解しないというのは、少々厳しすぎるラウンドだったのではないでしょうか。
A.(wrong)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct {
  char name[21];
  int level;
} skills;

void ssort(skills skill[],int size);

int main(void){
  short n,m;
  char str[21];
  double k;
  skills skill[40];
  int i,j,l,c=0,flg;
  scanf("%hd %hd %lf",&n,&m,&k);
  for(i=0;i<n;i++){
    scanf("%s %d",skill[i].name,&skill[i].level);
    skill[i].level*=k;
    if(skill[i].level<100) skill[i].level=-1;
    else c++;
  }
  l=n;
  for(i=0;i<m;i++){
    scanf("%s",str);
    flg=0;
    for(j=0;j<l;j++){
      if(strcmp(str,skill[j].name)==0){
if(skill[j].level<0){
  c++;
  skill[j].level=0;
}
flg=1;
break;
      }
    }
    if(flg==1) continue;
    strcpy(skill[l].name,str);
    skill[l++].level=0;
    c++;
  }
  ssort(skill,l);
  printf("%d\n",c);
  for(i=0;i<l;i++){
    if(skill[i].level<0) continue;
    printf("%s %d\n",skill[i].name,skill[i].level);
  }
  return 0;  
}

void ssort(skills skill[],int size){
  int i,j,place;
  skills tmp;
  for(i=0;i<size;i++){
    place=i;
    for(j=i+1;j<size;j++) if(strcmp(skill[place].name,skill[j].name)>0) place=j;
    tmp=skill[i];
    skill[i]=skill[place];
    skill[place]=tmp;
  }
}

0 件のコメント:

コメントを投稿