ここのメンバーで他にも参加した人っているのかな?
[hr]
前回の予選では、最初こそ極端に重かったけれど、しばらくしたら快適になったようでした。
しかし、今回は、ずっと重かったようです。
対策はしたようなのに、どうしてでしょうか。
[hr]
というわけで書いたソースです。
問題はこちら。http://www.ioi-jp.org/joi/2010/2011-yo-prob_and_sol/
一問目
#include
int main(int argc,char* argv[]) {
char infile[255],outfile[255];
FILE* in;
FILE* out;
/*declare values*/
int byouone,byousum;
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*/
byousum=0;
for(i=0;i
int main(int argc,char* argv[]) {
char infile[255],outfile[255];
FILE* in;
FILE* out;
/*declare values*/
char searchfor[11];
int ringnum;
int i;
int count;
char ring[11];
char ringbuf[21];
/*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",searchfor);
fscanf(in,"%d",&ringnum);
count=0;
for(i=0;i
int main(int argc,char* argv[]) {
char infile[255],outfile[255];
FILE* in;
FILE* out;
/*declare values*/
int n,k;
int x,y;
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",&n);
fscanf(in,"%d",&k);
for(i=0;in)x=n-x+1;
if(y*2>n)y=n-y+1;
if(x>y)fprintf(out,"%d\n",(y-1)%3+1);
else fprintf(out,"%d\n",(x-1)%3+1);
}
/*file close*/
fclose(in);
fclose(out);
return 0;
}
四問目
#include
unsigned long long kazu[100][21];
unsigned long long kazoe(int*,int,int,int);
int main(int argc,char* argv[]) {
char infile[255],outfile[255];
FILE* in;
FILE* out;
/*declare values*/
int suuzi[100];
int kosuu;
unsigned long long count;
int i,j;
/*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",&kosuu);
for(i=0;i=0 && nowsuuzi=0 && nowsuuzi
#include
int go(int,int,int,int,int,int,char[1000][1001]);
int main(int argc,char* argv[]) {
char infile[255],outfile[255];
FILE* in;
FILE* out;
/*declare values*/
int h,w;
int n;
char map[1000][1001];
int factpos[10][2];
int x,y;
int i;
int timesum;
/*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 %d",&h,&w,&n);
for(i=0;i='1' && map[y][x]0 && zikan[y*1000+x-1]>0)saitan=zikan[y*1000+x-1];
if(y>0 && zikan[(y-1)*1000+x]>0) {
if(zikan[(y-1)*1000+x]0) {
if(zikan[y*1000+x+1]0) {
if(zikan[(y+1)*1000+x]-1) {
zikan[y*1000+x]=saitan+1;
if(y==dy && x==dx) {
free(zikan);
return saitan;
}
}
}
}
}
}
}
六問目
#include
int go(int,int,int,int,char[20][21],int);
int main(int argc,char* argv[]) {
char infile[255],outfile[255];
FILE* in;
FILE* out;
/*declare values*/
int m,n;
char flag[20][21];
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 %d",&m,&n);
for(i=0;i=sx) {
nx-=sx;
ny++;
}
if(ok) {
if(ny<sy)sum+=go(nx,ny,sx,sy,flag,1); else {
if(flag[y][x]=='?')sum+=3; else sum++;
}
} else {
if(flag[y][x]=='?') {
for(i=0;i<3;i++) {
ok=0;
flag[y][x]=m[i];
for(yy=0;yy<sy-1;yy++) {
for(xx=0;xx<sx-1;xx++) {
if(flag[yy][xx]=='J' && flag[yy][xx+1]=='O'
&& flag[yy+1][xx]=='I') {
ok=1;goto out;
}
}
}
out:
if(ny<sy)sum+=go(nx,ny,sx,sy,flag,ok);
else
if(ok)sum++;
}
flag[y][x]='?';
} else {
for(yy=0;yy<sy-1;yy++) {
for(xx=0;xx<sx-1;xx++) {
if(flag[yy][xx]=='J' && flag[yy][xx+1]=='O'
&& flag[yy+1][xx]=='I') {
ok=1;goto out2;
}
}
}
out2:
if(ny<sy)sum+=go(nx,ny,sx,sy,flag,ok);
else
if(ok)sum++;
}
}
return sum;
}
[hr]
というわけで予想点数は92点です。さあ、どうなるかな.....