Don't like ads? PRO users don't see any ads ;-)
Guest

10b

By: a guest on Apr 25th, 2012  |  syntax: C  |  size: 3.86 KB  |  hits: 18  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include <stdio.h>
  2. #define maxN 100
  3. #define maxK 100
  4. #define maxT 30001
  5.  
  6. int main()
  7. {
  8.     int TABLE[maxT][maxK]={0};
  9.     int Time[maxN]={0};
  10.     int Prosperity[maxN]={0}, Stoutness[maxN]={0};
  11.     int N, K, T;
  12.     int i, j, Max = 0, counter;
  13.         FILE *F1;
  14.         FILE *F2;
  15.         F1 = fopen("input.txt", "r");
  16.         F2 = fopen("output.txt", "w+");
  17.         fscanf(F1,"%d%d%d", &N, &K, &T);
  18.     for(i=0; i<N; ++i)
  19.              fscanf(F1,"%d", &(Time[i]));
  20.     for(i=0; i<N; ++i)
  21.              fscanf(F1,"%d", &(Prosperity[i]));
  22.     for(i=0; i<N; ++i)
  23.              fscanf(F1,"%d", &(Stoutness[i]));
  24.     for(i=0; i<N; i++)
  25.                                 TABLE[(Time[i])][(Stoutness[i])]=Prosperity[i];  
  26.         if (T < K)
  27.         {
  28.                 for(i=1; i<T; i++)
  29.                 {
  30.                         counter = i-1;
  31.                         TABLE[i+1][0] = TABLE[i+1][0] +( (TABLE[i][0] > TABLE[i][1] )  ? TABLE[i][0] : TABLE[i][1] );
  32.                         TABLE[i+1][i] = TABLE[i+1][i] +( (TABLE[i][i] > TABLE[i][counter]) ? TABLE[i][i] : TABLE[i][counter] );
  33.                         if ( (TABLE[i][counter] >= TABLE[i][i]) && (TABLE[i][counter] >= TABLE[i][counter-1]) )
  34.                                         TABLE[i+1][counter] = TABLE[i+1][counter] +  TABLE[i][counter];
  35.                                 else
  36.                                         if ((TABLE[i][i] >= TABLE[i][counter]) && (TABLE[i][i] >= TABLE[i][counter-1]))
  37.                                                 TABLE[i+1][counter] = TABLE[i+1][counter] + TABLE[i][i];
  38.                                         else
  39.                                                 TABLE[i+1][counter] = TABLE[i+1][counter] + TABLE[i][counter-1];
  40.                         for( j=1; j<i-1; j++)
  41.                         {
  42.                                 if ( (TABLE[i][j] >= TABLE[i][j+1]) && (TABLE[i][j] >= TABLE[i][j-1]) )
  43.                                         TABLE[i+1][j] = TABLE[i+1][j] +  TABLE[i][j];
  44.                                 else
  45.                                         if ((TABLE[i][j+1] >= TABLE[i][j]) && (TABLE[i][j+1] >= TABLE[i][j-1]))
  46.                                                 TABLE[i+1][j] = TABLE[i+1][j] + TABLE[i][j+1];
  47.                                         else
  48.                                                 TABLE[i+1][j] = TABLE[i+1][j] + TABLE[i][j-1];
  49.                         }
  50.                 }
  51.  
  52.         }
  53.         else
  54.         {
  55.                 for(i=1; i<K; i++)
  56.                 {
  57.                         counter = i-1;
  58.                         TABLE[i+1][0] = TABLE[i+1][0] +( (TABLE[i][0] > TABLE[i][1] )  ? TABLE[i][0] : TABLE[i][1] );
  59.                         TABLE[i+1][i] = TABLE[i+1][i] +( (TABLE[i][i] > TABLE[i][counter]) ? TABLE[i][i] : TABLE[i][counter] );
  60.                         if ( (TABLE[i][counter] >= TABLE[i][i]) && (TABLE[i][counter] >= TABLE[i][counter-1]) )
  61.                                         TABLE[i+1][counter] = TABLE[i+1][counter] +  TABLE[i][counter];
  62.                                 else
  63.                                         if ((TABLE[i][i] >= TABLE[i][counter]) && (TABLE[i][i] >= TABLE[i][counter-1]))
  64.                                                 TABLE[i+1][counter] = TABLE[i+1][counter] + TABLE[i][i];
  65.                                         else
  66.                                                 TABLE[i+1][counter] = TABLE[i+1][counter] + TABLE[i][counter-1];
  67.                         for( j=1; j<i-1; j++)
  68.                         {
  69.                                 if ( (TABLE[i][j] >= TABLE[i][j+1]) && (TABLE[i][j] >= TABLE[i][j-1]) )
  70.                                         TABLE[i+1][j] = TABLE[i+1][j] +  TABLE[i][j];
  71.                                 else
  72.                                         if ((TABLE[i][j+1] >= TABLE[i][j]) && (TABLE[i][j+1] >= TABLE[i][j-1]))
  73.                                                 TABLE[i+1][j] = TABLE[i+1][j] + TABLE[i][j+1];
  74.                                         else
  75.                                                 TABLE[i+1][j] = TABLE[i+1][j] + TABLE[i][j-1];
  76.                         }
  77.                 }
  78.                 for(; i<T; i++)
  79.                 {
  80.                         counter = i-1;
  81.                         TABLE[i+1][0] = TABLE[i+1][0] +( (TABLE[i][0] > TABLE[i][1] )  ? TABLE[i][0] : TABLE[i][1] );
  82.                         TABLE[i+1][i] = TABLE[i+1][i] +( (TABLE[i][i] > TABLE[i][counter]) ? TABLE[i][i] : TABLE[i][counter] );
  83.                         if ( (TABLE[i][counter] >= TABLE[i][i]) && (TABLE[i][counter] >= TABLE[i][counter-1]) )
  84.                                         TABLE[i+1][counter] = TABLE[i+1][counter] +  TABLE[i][counter];
  85.                                 else
  86.                                         if ((TABLE[i][i] >= TABLE[i][counter]) && (TABLE[i][i] >= TABLE[i][counter-1]))
  87.                                                 TABLE[i+1][counter] = TABLE[i+1][counter] + TABLE[i][i];
  88.                                         else
  89.                                                 TABLE[i+1][counter] = TABLE[i+1][counter] + TABLE[i][counter-1];
  90.                         for( j=1; j<i-1; j++)
  91.                         {
  92.                                 if ( (TABLE[i][j] >= TABLE[i][j+1]) && (TABLE[i][j] >= TABLE[i][j-1]) )
  93.                                         TABLE[i+1][j] = TABLE[i+1][j] +  TABLE[i][j];
  94.                                 else
  95.                                         if ((TABLE[i][j+1] >= TABLE[i][j]) && (TABLE[i][j+1] >= TABLE[i][j-1]))
  96.                                                 TABLE[i+1][j] = TABLE[i+1][j] + TABLE[i][j+1];
  97.                                         else
  98.                                                 TABLE[i+1][j] = TABLE[i+1][j] + TABLE[i][j-1];
  99.                         }
  100.                 }
  101.         }
  102.         Max = TABLE[i][0];
  103.         for(j = 1; i<K; j++)
  104.                 if (Max < TABLE[i][j])
  105.                         Max = TABLE[i][j];
  106.     fprintf(F2, "%d", Max);
  107.     return 0;
  108. }