Submission #1691208


Source Code Expand

#include <stdio.h>
#include <stdlib.h>
#define datatype student

typedef struct {
	int h;
	int w;
	int D;
}student;

//比較関数
int D_compare(datatype a, datatype b){
	return a.D - b.D;
}

int w_compare(datatype a, datatype b){
	return a.w - b.w;
}

//昇順
void sort_sub(datatype *origin, int left, int right, datatype *tmp, int (*comp)(datatype a, datatype b)){
	if(right - left > 1){
		int i, j, k, half = (left + right) / 2;
		sort_sub(origin, left, half, tmp, comp);
		sort_sub(origin, half, right, tmp, comp);
		for(i = left; i < right; i++){
			tmp[i] = origin[i];
		}
		for(i = left, j = left, k = half; i < right; i++){
			if(k == right){
				origin[i] = tmp[j];
				j++;
			}
			else if(comp(tmp[j], tmp[k]) <= 0 && j < half){
				origin[i] = tmp[j];
				j++;
			}
			else{
				origin[i] = tmp[k];
				k++;
			}
		}
	}
}

void sort(datatype *origin, int N, int (*comp)(datatype a, datatype b)){
	datatype *tmp = (datatype *)malloc(sizeof(datatype) * N);
	sort_sub(origin, 0, N, tmp, comp);
	free(tmp);
}

int ABS(int x){
	return x >= 0 ? x : -x;
}

int main(){
	int N, M, x0, a, p, i, j;
	long long ans = 0;
	scanf("%d%d", &N, &M);
	scanf("%d%d%d", &x0, &a, &p);
	student *s = (student *)malloc(sizeof(student) * N * M);
	s[0].h = 0;
	s[0].w = 0;
	s[0].D = x0;
	for(i = 1; i < N * M; i++){
		s[i].h = i / M;
		s[i].w = i % M;
		s[i].D = (s[i - 1].D + a) % p;
	}
	sort(s, N * M, D_compare);
	for(i = 0; i < N; i++){
		sort(&s[i * M], M, w_compare);
		for(j = 0; j < M; j++){
			ans += ABS(s[i * M + j].h - i) + ABS(s[i * M + j].w - j);
		}
	}
	printf("%lld\n", ans);
	return 0;
}

Submission Info

Submission Time
Task C - 席替え
User abc050
Language C (GCC 5.4.1)
Score 100
Code Size 1671 Byte
Status AC
Exec Time 2 ms
Memory 384 KB

Compile Error

./Main.c: In function ‘main’:
./Main.c:59:2: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d", &N, &M);
  ^
./Main.c:60:2: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d%d", &x0, &a, &p);
  ^

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 82
Set Name Test Cases
All case_01.txt, case_02.txt, case_03.txt, case_04.txt, case_05.txt, case_06.txt, case_07.txt, case_08.txt, case_09.txt, case_10.txt, case_11.txt, case_12.txt, case_13.txt, case_14.txt, case_15.txt, case_16.txt, case_17.txt, case_18.txt, case_19.txt, case_20.txt, case_21.txt, case_22.txt, case_23.txt, case_24.txt, case_25.txt, case_26.txt, case_27.txt, case_28.txt, case_29.txt, case_30.txt, case_31.txt, case_32.txt, case_33.txt, case_34.txt, case_35.txt, case_36.txt, case_37.txt, case_38.txt, case_39.txt, case_40.txt, case_41.txt, case_42.txt, case_43.txt, case_44.txt, case_45.txt, case_46.txt, case_47.txt, case_48.txt, case_49.txt, case_50.txt, case_51.txt, case_52.txt, case_53.txt, case_54.txt, case_55.txt, case_56.txt, case_57.txt, case_58.txt, case_59.txt, case_60.txt, case_61.txt, case_62.txt, case_63.txt, case_64.txt, case_65.txt, case_66.txt, case_67.txt, case_68.txt, case_69.txt, case_70.txt, case_71.txt, case_72.txt, case_73.txt, case_74.txt, case_75.txt, case_76.txt, case_77.txt, case_78.txt, case_79.txt, sample_1.txt, sample_2.txt, sample_3.txt
Case Name Status Exec Time Memory
case_01.txt AC 1 ms 256 KB
case_02.txt AC 1 ms 256 KB
case_03.txt AC 1 ms 256 KB
case_04.txt AC 1 ms 128 KB
case_05.txt AC 1 ms 128 KB
case_06.txt AC 1 ms 128 KB
case_07.txt AC 1 ms 128 KB
case_08.txt AC 1 ms 128 KB
case_09.txt AC 1 ms 256 KB
case_10.txt AC 1 ms 256 KB
case_11.txt AC 1 ms 128 KB
case_12.txt AC 1 ms 256 KB
case_13.txt AC 1 ms 128 KB
case_14.txt AC 1 ms 256 KB
case_15.txt AC 1 ms 256 KB
case_16.txt AC 1 ms 256 KB
case_17.txt AC 1 ms 256 KB
case_18.txt AC 1 ms 256 KB
case_19.txt AC 2 ms 384 KB
case_20.txt AC 1 ms 256 KB
case_21.txt AC 1 ms 256 KB
case_22.txt AC 1 ms 128 KB
case_23.txt AC 1 ms 256 KB
case_24.txt AC 1 ms 256 KB
case_25.txt AC 1 ms 256 KB
case_26.txt AC 1 ms 256 KB
case_27.txt AC 1 ms 256 KB
case_28.txt AC 1 ms 128 KB
case_29.txt AC 1 ms 256 KB
case_30.txt AC 1 ms 256 KB
case_31.txt AC 1 ms 128 KB
case_32.txt AC 1 ms 128 KB
case_33.txt AC 1 ms 256 KB
case_34.txt AC 1 ms 256 KB
case_35.txt AC 1 ms 256 KB
case_36.txt AC 1 ms 256 KB
case_37.txt AC 1 ms 128 KB
case_38.txt AC 1 ms 128 KB
case_39.txt AC 1 ms 256 KB
case_40.txt AC 1 ms 256 KB
case_41.txt AC 1 ms 256 KB
case_42.txt AC 1 ms 128 KB
case_43.txt AC 1 ms 256 KB
case_44.txt AC 1 ms 128 KB
case_45.txt AC 1 ms 256 KB
case_46.txt AC 1 ms 256 KB
case_47.txt AC 1 ms 384 KB
case_48.txt AC 1 ms 128 KB
case_49.txt AC 1 ms 128 KB
case_50.txt AC 2 ms 384 KB
case_51.txt AC 2 ms 384 KB
case_52.txt AC 2 ms 384 KB
case_53.txt AC 2 ms 384 KB
case_54.txt AC 2 ms 384 KB
case_55.txt AC 2 ms 384 KB
case_56.txt AC 2 ms 384 KB
case_57.txt AC 2 ms 384 KB
case_58.txt AC 2 ms 384 KB
case_59.txt AC 2 ms 384 KB
case_60.txt AC 2 ms 384 KB
case_61.txt AC 2 ms 384 KB
case_62.txt AC 2 ms 384 KB
case_63.txt AC 2 ms 384 KB
case_64.txt AC 2 ms 384 KB
case_65.txt AC 2 ms 384 KB
case_66.txt AC 2 ms 384 KB
case_67.txt AC 2 ms 384 KB
case_68.txt AC 2 ms 384 KB
case_69.txt AC 2 ms 384 KB
case_70.txt AC 1 ms 128 KB
case_71.txt AC 1 ms 128 KB
case_72.txt AC 1 ms 128 KB
case_73.txt AC 1 ms 256 KB
case_74.txt AC 1 ms 128 KB
case_75.txt AC 1 ms 256 KB
case_76.txt AC 1 ms 128 KB
case_77.txt AC 1 ms 128 KB
case_78.txt AC 1 ms 128 KB
case_79.txt AC 1 ms 256 KB
sample_1.txt AC 1 ms 128 KB
sample_2.txt AC 1 ms 128 KB
sample_3.txt AC 1 ms 128 KB