#include <stdio.h> #include <limits.h> int c[2000][2000]; int n; int a[2000]; int i; int x,y; int main(int argc, char*argv[]) { scanf("%d",&n); for(y=0;y<n;y++) { for(x=y;x<n;x++) { scanf("%d",&c[y][x]); } } for(i=0;i<n;i++) { a[i] = INT_MAX; } for(x=0;x<n;x++) { for(y=0;y<n-x;y++) { int max = 0; int start=y; int stop=x+y; for(i=start;i<=stop;i++) { if(a[i]>a[max]) { max = i; } } int q = c[start][stop]; if(q<a[max]) { a[max]=q; } } } int sum=0; for(i=0;i<n;i++) { sum += a[i]; } printf("%d\n",sum); return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include <stdio.h> #include <limits.h> int c[2000][2000]; int n; int a[2000]; int i; int x,y; int main(int argc, char*argv[]) { scanf("%d",&n); for(y=0;y<n;y++) { for(x=y;x<n;x++) { scanf("%d",&c[y][x]); } } for(i=0;i<n;i++) { a[i] = INT_MAX; } for(x=0;x<n;x++) { for(y=0;y<n-x;y++) { int max = 0; int start=y; int stop=x+y; for(i=start;i<=stop;i++) { if(a[i]>a[max]) { max = i; } } int q = c[start][stop]; if(q<a[max]) { a[max]=q; } } } int sum=0; for(i=0;i<n;i++) { sum += a[i]; } printf("%d\n",sum); return 0; } |