Advertisement
Guest User

Programming 1174

a guest
May 3rd, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. #include <cstdio>
  2.  
  3. #define MAX 1234567890
  4. using namespace std;
  5.  
  6. int abs(int n)
  7. {
  8.     return (n<0)?(-n):n;
  9. }
  10. struct comp
  11. {
  12.     int x,y,z; //position
  13.     int m,k,c; //monitor keyboard cpu
  14. } com[10];
  15. int n,m,ans = MAX;
  16.  
  17. void findmin(int x, int y, int z, int d, int mo,int ky, int c,int visit[])
  18. {
  19.     if(mo==0 && (ky==0 && c==0))
  20.     {
  21.         if(ans > d)ans = d;
  22.         return;
  23.     }
  24.     int i,cal,*visited = new int[m];
  25.     for(i=0; i<m; i++)
  26.         visited[i] = visit[i];
  27.     for(i=0; i<m; i++)
  28.         if(!visited[i])
  29.             visited[i] = 1,cal = abs(com[i].x-x)*abs(com[i].x-x)+abs(com[i].y-y)*abs(com[i].y-y)+abs(com[i].z-z)*abs(com[i].z-z),findmin(com[i].x,com[i].y,com[i].z,d+cal,(com[i].m>=mo)?0:mo-com[i].m,(com[i].k>=ky)?0:ky-com[i].k,(com[i].c>=c)?0:c-com[i].c,visited),visited[i] = 0;
  30. }
  31. int main()
  32. {
  33.     int x,y,z,i;
  34.     scanf("%d %d %d %d %d",&n,&x,&y,&z,&m);
  35.     int* visit = new int[m];
  36.     for(i=0; i<m; i++)
  37.         scanf("%d %d %d %d %d %d",&com[i].x,&com[i].y,&com[i].z,&com[i].m,&com[i].k,&com[i].c),visit[i] = 0;
  38.     findmin(x,y,z,0,n,n,n,visit);
  39.     printf("%d",ans);
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement