RCO presents 日本橋ハーフマラソン 予選

Submission #1503082

Source codeソースコード

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<math.h>
#define swap(type,a,b) do{type t=a;a=b;b=t;}while(0);
#define MAX(a,b) (((a)>(b))?(a):(b))
#define MIN(a,b) (((a)<(b))?(a):(b))
#define ll long long
#define INF 100000000
#define FOR(i,a,n) for(i=a;i<n;i++)
void fill(int a[],int b,int c){
	int i;
	FOR(i,0,b) a[i]=c;
	return;
}
typedef struct{
    int a,b,data;
}Pos;
int comp(const void *a,const void *b){
    return ((Pos*)b)->data - ((Pos*)a)->data;
}
char map[50][51];
int used[50][50];
int x[400][8],y[400][8];
int dx[4]={0,-1,0,1};
int dy[4]={1,0,1,0};
int size=0;
int dfs(int nx,int ny,int n){
    int px,py,s=0,i,j;
    Pos d[4];
    used[nx][ny]=1;
    x[size][n]=nx+1,y[size][n]=ny+1;
    if(n==7) return 1;
    FOR(i,0,4){
        px=nx+dx[i],py=ny+dy[i];
        if(px>=0&&py>=0&&px<50&&py<50&&!used[px][py]&&map[px][py]!='0'){
            d[s].a=px,d[s].b=py,d[s++].data=map[px][py]-'0';
        }
    }
    qsort(d,s,sizeof(Pos),comp);
    FOR(i,0,s){
        if(dfs(d[i].a,d[i].b,n+1)) return 1;
    }
    used[nx][ny]=0;
    return 0;
}
int main(void){
    int h,w,n,i,j,k;
    int cnt=2;
    scanf("%d%d%d",&h,&w,&n);
    FOR(i,0,50) scanf("%s",map[i]);
    for(i=9;i>=1;i--){
        FOR(j,0,50){
            FOR(k,0,50){
                if((map[j][k]-'0')==i&&!used[j][k]){
                    if(dfs(j,k,0)) size++;
                }
            }
        }
    }
    printf("%d\n",size);
    FOR(i,0,size){
        FOR(j,0,8){
            printf("%d %d\n",x[i][j],y[i][j]);
        }
    }
}

Submission

Task問題 A - Multiple Pieces
User nameユーザ名 stranger
Created time投稿日時
Language言語 C (GCC 5.4.1)
Status状態 AC
Score得点 330206
Source lengthソースコード長 1604 Byte
File nameファイル名
Exec time実行時間 1 ms
Memory usageメモリ使用量 256 KB

Compiler messageコンパイルメッセージ

./Main.c: In function ‘main’:
./Main.c:50:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d%d",&h,&w,&n);
^
./Main.c:51:17: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
FOR(i,0,50) scanf("%s",map[i]);
^

Test case

Set

Set name Score得点 / Max score Cases
test_01 30431 / 1343058 subtask_01_01.txt
test_02 28100 / 1343058 subtask_01_02.txt
test_03 34359 / 1343058 subtask_01_03.txt
test_04 31764 / 1343058 subtask_01_04.txt
test_05 34327 / 1343058 subtask_01_05.txt
test_06 37083 / 1343058 subtask_01_06.txt
test_07 36179 / 1343058 subtask_01_07.txt
test_08 28953 / 1343058 subtask_01_08.txt
test_09 34881 / 1343058 subtask_01_09.txt
test_10 34129 / 1343058 subtask_01_10.txt

Test case

Case name Status状態 Exec time実行時間 Memory usageメモリ使用量
subtask_01_01.txt AC 1 ms 256 KB
subtask_01_02.txt AC 1 ms 256 KB
subtask_01_03.txt AC 1 ms 128 KB
subtask_01_04.txt AC 1 ms 128 KB
subtask_01_05.txt AC 1 ms 128 KB
subtask_01_06.txt AC 1 ms 256 KB
subtask_01_07.txt AC 1 ms 128 KB
subtask_01_08.txt AC 1 ms 256 KB
subtask_01_09.txt AC 1 ms 256 KB
subtask_01_10.txt AC 1 ms 128 KB