paradox64ce

assign04.c

Feb 4th, 2020
64
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. Name: Mayank Kumar
  3. Roll No:1901Cb24
  4. Assignment no 4
  5. */
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9.  
  10. int abs(int x)  //helper function for absolute value
  11. {
  12.  return (x>0)?x:-1*x;
  13. }
  14.  
  15. int min(int a,int b) // helper function for minimum of 2 values
  16. {
  17.   return (a<b)?a:b;
  18. }
  19.  
  20. int dist(int a,int b) //helper function for minimum distance
  21. {
  22.   int d=abs(a-b);
  23.   d=min(d,100-d);
  24.   return d;
  25. }
  26.  
  27. int main()
  28. {
  29.     int n,m,k;
  30.     scanf("%d",&n);
  31.     scanf("%d",&m);
  32.     scanf("%d",&k);
  33.     int x[n],y[m],r[m],total=0,u[n],charged=0;
  34.  
  35.  
  36.  
  37.     for(int i=0;i<n;i++)
  38.     {
  39.        scanf("%d",&x[i]);
  40.     }
  41.  
  42.     for(int i=0;i<m;i++)
  43.     {
  44.      scanf("%d",&y[i]);
  45.     }
  46.  
  47.  
  48.     for(int i=0;i<m;i++)
  49.     {
  50.       scanf("%d",&r[i]);
  51.     }
  52.     for(int i=0;i<n;i++)
  53.     {
  54.       u[i]=0;
  55.     }
  56.  
  57.     //do something
  58.  
  59.     for(int i=0;i<m;i++)
  60.     {
  61.       //for each vehicle find nearest station
  62.       int c_s;
  63.       int d=1000;
  64.       for(int j=0;j<n;j++)
  65.       {
  66.         if(dist(y[i],x[j])<d && u[j]<k)
  67.         {
  68.            c_s=j;
  69.            d=dist(y[i],x[j]);
  70.         }
  71.       }
  72.  
  73.       //nearest station found with index c_s(charging station)
  74.  
  75.       if(u[c_s]<k)
  76.       {
  77.  
  78.         if(r[i]>=d)
  79.         {
  80.           u[c_s]++;
  81.           total+=d;
  82.           charged++;
  83.         }
  84.       }
  85.  
  86.     }
  87.  
  88.     printf("%d ",total);
  89.     printf("%d ",m-charged);
  90.  
  91.     for(int i=0;i<n;i++)
  92.     {
  93.       float op=(float)u[i]/k;
  94.       op*=100;
  95.       int sd=op;
  96.       printf("%d ",sd);
  97.     }
  98.     return 0;
  99. }
  100.  
  101. /*
  102.   test 0:
  103.   i/p:2 7 3 7 99 3 90 60 40 50 11 3  50 50 50 40 40 40 40
  104.   o/p: 93 1 100 100
  105.  
  106.   test 1:
  107.   i/p:2 3 3 5 9 3 9 32 81 50 50 50
  108.   o/p:25 0 33 66
  109.  
  110.   test 2:
  111.   i/p:1 5 3 95 3 35 49 7 11 15 15 15 30 30
  112.   o/p:36 2 100
  113. */
RAW Paste Data