sysy-data/final_performance_c/sy/transpose0.sy

55 lines
1.0 KiB
Plaintext

#include "sylib.h"
int matrix[20000000];
int a[100000];
int transpose(int n, int matrix[], int rowsize)
{
int colsize = n / rowsize;
int i = 0;
int j = 0;
while (i < colsize) {
j = 0;
while (j < rowsize) {
if (i < j) {
j = j + 1;
continue;
}
int curr = matrix[i * rowsize + j];
matrix[j * colsize + i] = matrix[i * rowsize + j];
matrix[i * rowsize + j] = curr;
j = j + 1;
}
i = i + 1;
}
return -1;
}
int main()
{
int n = getint();
int len = getarray(a);
starttime();
int i = 0;
while (i < n) {
matrix[i] = i;
i = i + 1;
}
i = 0;
while (i < len) {
transpose(n, matrix, a[i]);
i = i + 1;
}
int ans = 0;
i = 0;
while (i < len) {
ans = ans + i * i * matrix[i];
i = i + 1;
}
if (ans < 0)
ans = -ans;
stoptime();
putint(ans);
putch(10);
return 0;
}