結果速報:提出したファイルが全て合っていれば104点/120
書いたコード
問題1
► スポイラーを表示
#include
int main(int argc,char* argv[]) {
char infile[255],outfile[255];
FILE* in;
FILE* out;
/*declare values*/
int pasta[3];
int juice[2];
int minpasta;
int minjuice;
int i;
/*open files*/
sprintf(infile,"%s-in%s.txt",argv[1],argv[2]);
sprintf(outfile,"%s-out%s.txt",argv[1],argv[2]);
in=fopen(infile,"r");
if(in==NULL)return 1;
out=fopen(outfile,"w");
if(out==NULL) {
fclose(in);
return 1;
}
/*do work*/
fscanf(in,"%d",&pasta[0]);
fscanf(in,"%d",&pasta[1]);
fscanf(in,"%d",&pasta[2]);
fscanf(in,"%d",&juice[0]);
fscanf(in,"%d",&juice[1]);
minpasta=10000;
for(i=0;i
#include
typedef struct {
int number;
int katiten;
int zyuni;
} team_t;
int comp(const void* x,const void* y) {
team_t* a=(team_t*)x;
team_t* b=(team_t*)y;
if(a->katitenkatiten)return 1;
if(a->katiten>b->katiten)return -1;
return 0;
}
int main(int argc,char* argv[]) {
char infile[255],outfile[255];
FILE* in;
FILE* out;
/*declare values*/
int score[100][100];
team_t team[100];
int zyuni[100];
int i,j;
int N;
int gamemax;
int teamA,teamB,scoreA,scoreB;
/*open files*/
sprintf(infile,"%s-in%s.txt",argv[1],argv[2]);
sprintf(outfile,"%s-out%s.txt",argv[1],argv[2]);
in=fopen(infile,"r");
if(in==NULL)return 1;
out=fopen(outfile,"w");
if(out==NULL) {
fclose(in);
return 1;
}
/*do work*/
for(i=0;iscoreB) {
/*teamA won teamB*/
score[teamA][teamB]=3;
score[teamB][teamA]=0;
} else if(scoreA
#include
int comp(const void* x,const void* y) {
int* a=(int*)x;
int* b=(int*)y;
if(*a*b)return -1;
return 0;
}
int main(int argc,char* argv[]) {
char infile[255],outfile[255];
FILE* in;
FILE* out;
/*declare values*/
int N;
int p_kizi,p_topping;
int cal_kizi;
int cal_topping[100];
int i;
int best_plice,best_cal;
int now_plice,now_cal;
/*open files*/
sprintf(infile,"%s-in%s.txt",argv[1],argv[2]);
sprintf(outfile,"%s-out%s.txt",argv[1],argv[2]);
in=fopen(infile,"r");
if(in==NULL)return 1;
out=fopen(outfile,"w");
if(out==NULL) {
fclose(in);
return 1;
}
/*do work*/
fscanf(in,"%d",&N);
fscanf(in,"%d %d",&p_kizi,&p_topping);
fscanf(in,"%d",&cal_kizi);
for(i=0;i
int memo[100][4][4];
int rireki[102];
int calc(int yotei[100],int day,int max);
int main(int argc,char* argv[]) {
char infile[255],outfile[255];
FILE* in;
FILE* out;
/*declare values*/
int N,K;
int yotei[100]={0};
int rireki[200];
int i,j;
int oneyotei,onepasta;
/*open files*/
sprintf(infile,"%s-in%s.txt",argv[1],argv[2]);
sprintf(outfile,"%s-out%s.txt",argv[1],argv[2]);
in=fopen(infile,"r");
if(in==NULL)return 1;
out=fopen(outfile,"w");
if(out==NULL) {
fclose(in);
return 1;
}
/*do work*/
fscanf(in,"%d %d",&N,&K);
for(i=0;i=max)return 1;
if(memo[day][rireki[day]][rireki[day+1]]>=0)
return memo[day][rireki[day]][rireki[day+1]];
if(yotei[day]!=0) {
if(mode!=yotei[day]) {
rireki[day+2]=yotei[day];
result+=calc(yotei,day+1,max);
}
} else {
if(mode!=1) {
rireki[day+2]=1;
result+=calc(yotei,day+1,max);
}
if(mode!=2) {
rireki[day+2]=2;
result+=calc(yotei,day+1,max);
}
if(mode!=3) {
rireki[day+2]=3;
result+=calc(yotei,day+1,max);
}
}
result%=10000;
memo[day][rireki[day]][rireki[day+1]]=result;
return result;
}
問題5
► スポイラーを表示
#include
enum {
STAT_UL=0,
STAT_L,
STAT_DL,
STAT_DR,
STAT_R,
STAT_UR
};
#define ishani(a) ((a)>=0 && (a)
#include
void tabai_plus(char* a,int b);
int waru_amari(const char* a,int b);
int left_is_big(const char* a,const char* b);
int is_zigzag(const char* a);
int main(int argc,char* argv[]) {
char infile[255],outfile[255];
FILE* in;
FILE* out;
/*declare values*/
char a[1000];
char b[1000];
int m;
int amari;
int count;
/*open files*/
sprintf(infile,"%s-in%s.txt",argv[1],argv[2]);
sprintf(outfile,"%s-out%s.txt",argv[1],argv[2]);
in=fopen(infile,"r");
if(in==NULL)return 1;
out=fopen(outfile,"w");
if(out==NULL) {
fclose(in);
return 1;
}
/*do work*/
fscanf(in,"%s",a);
fscanf(in,"%s",b);
fscanf(in,"%d",&m);
amari=waru_amari(a,m);
if(amari)tabai_plus(a,m-amari);
count=0;
while(!left_is_big(a,b)) {
if(is_zigzag(a))count=(count+1)%10000;
tabai_plus(a,m);
}
fprintf(out,"%d\n",count);
/*file close*/
fclose(in);
fclose(out);
return 0;
}
int waru_amari(const char* a,int b) {
int current=0;
int i;
for(i=0;a[i]!=0;i++) {
current=(current*10+(a[i]-'0'))%b;
}
return current;
}
void tabai_plus(char* a,int b) {
char c[1000];
char d[10];
char e[1000];
int i;
for(i=0;i0;i--) {
c[i]+=e[i]-'0';
if(c[i]>'9') {
c[i]-=10;
c[i-1]++;
}
}
if(c[0]!='0')strcpy(a,c); else strcpy(a,&c[1]);
}
int left_is_big(const char* a,const char* b) {
char c[1000]={0};
char d[1000]={0};
int length;
int i;
length=strlen(a);
if(strlen(b)>length)length=strlen(b);
strcpy(&c[length-strlen(a)],a);
strcpy(&d[length-strlen(b)],b);
for(i=0;id[i])return 1;
}
return 0;
}
int is_zigzag(const char* a) {
int i;
int len;
len=strlen(a);
if(len==1)return 1;
if(len==2) {
if(a[0]!=a[1])return 1; else return 0;
}
for(i=2;i=0)return 0;
}
return 1;
}
といったところです。
結果発表は12月23日頃か・・・
さあ、どうなるかな?
オフトピック
すいません、’を使ったところの表示がおかしくなっているようです。
ここの仕様のようですので、私には直せません。
ここの仕様のようですので、私には直せません。