fork(10) download
  1. int op=0;
  2. int sum0(int n,int* A) {
  3. int i,j,k,v,Aij,Ajk,Aki,s=0; op=0;
  4. for(i=0;i<n;i++) {
  5. for(j=0;j<n;j++) {
  6. Aij=A[i*n+j];op++;
  7. for(k=0;k<n;k++) {
  8. Ajk=A[j*n+k]; Aki=A[k*n+i]; op+=2;
  9. v=Ajk<Aki?Ajk:Aki;
  10. v=Aij<v?Aij:v;
  11. s=s+v;
  12. }
  13. }
  14. }
  15. return s;
  16. }
  17. int sum1(int n,int* A) {
  18. int i,j,k,Cij,Aij,Ajk,Aki,s=0; op=0;
  19. for(i=0;i<n;i++) {
  20. for(j=0;j<n;j++) { if (i==j) continue;
  21. Aij=A[i*n+j]; op++; if (Aij<=0) continue;
  22. for(Cij=k=0;k<n;k++) {
  23. Ajk=A[j*n+k]; op++; if (Aij>Ajk) continue;
  24. Aki=A[k*n+i]; op++; if (Aij>Aki) continue;
  25. if (Aij<Ajk && Aij<Aki) Cij+=3;
  26. else if (Aij==Ajk && Aij<Aki) Cij+=2;
  27. else if (Aij<=Ajk && Aij==Aki) Cij++;
  28. }
  29. s+=Aij*Cij;
  30. }
  31. }
  32. return s;
  33. }
  34.  
  35. #include <time.h>
  36. #include <stdio.h>
  37. #include <stdlib.h>
  38.  
  39. int main(int argc, char const *argv[]) {
  40. enum { n=10 };
  41. int i,j,v,A[n*n];
  42. srand(time(0));
  43.  
  44. for(i=0;i<n;i++) {
  45. for(j=0;j<n;j++) {
  46. v=rand()%1000;
  47. A[i*n+j]=i==j?0 : v;
  48. }
  49. }
  50.  
  51. for(i=0;i<n;i++) {
  52. for(j=0;j<n;j++) printf("%4d",A[i*n+j]);
  53. printf("\n");
  54. }
  55.  
  56. printf("sum0=%d",sum0(n,A));printf(" op=%d\n",op);
  57. printf("sum1=%d",sum1(n,A));printf(" op=%d\n",op);
  58.  
  59. return 0;
  60. }
Success #stdin #stdout 0s 4748KB
stdin
Standard input is empty
stdout
   0  50   8 349 157 976 397 341 292  80
 584   0 211 114 379 506 380 569  55 134
 620 656   0 521 730 369 551 500 189 698
 988 454 748   0 803 258 324 552 599 616
 984 535 832 195   0 211  53 382 133 108
 516 105 117 691 626   0 413 529 699 602
 227  39  56 328 387 859   0 712 763 889
 328 748 425 513 295  75  76   0 809 209
 809 325 666 278 369 293 478 782   0 177
 384 402 569 440  82 956 651  20 668   0
sum0=150885 op=2100
sum1=150885 op=1394