Guest User

mere

a guest
May 23rd, 2015
320
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. #include <cstdio>
  2.  
  3. using namespace std;
  4.  
  5. FILE *fin = fopen("mere.in","r");
  6. FILE *fout = fopen("mere.out","w");
  7.  
  8. struct App {
  9.     int x, y, z, r;
  10. }Apple[203];
  11.  
  12. int N, Fallen[203], Answer, Down = 10002;
  13.  
  14. void Fall(int App_nr);
  15. int Distance(App A, App B);
  16.  
  17. int main() {
  18.     fscanf(fin, "%d\n", &N);
  19.  
  20.     for(int i = 1; i <= N; ++i) {
  21.         fscanf(fin, "%d %d %d %d\n", &Apple[i].x, &Apple[i].y, &Apple[i].z, &Apple[i].r);
  22.  
  23.         Down = (Down > Apple[i].z ? Apple[i].z : Down);
  24.     }
  25.  
  26.     Fallen[1] = 1;
  27.  
  28.     Fall(1);
  29.  
  30.     for(int i = 1; i <= N; ++i) {
  31.         Answer += Fallen[i];
  32.     }
  33.  
  34.     fprintf(fout, "%d\n", Answer);
  35.  
  36.     fclose(fin);
  37.     fclose(fout);
  38.  
  39.     return 0;
  40. }
  41.  
  42. void Fall(int App_nr) {
  43.     while(Down <= Apple[App_nr].z) {
  44.         for(int i = 1; i <= N; ++i) {
  45.             if(App_nr != i && Fallen[i] == 0 && Apple[App_nr].z == Apple[i].z) {
  46.                 if(Distance(Apple[i], Apple[App_nr]) <= (Apple[App_nr].r + Apple[i].r) * (Apple[App_nr].r + Apple[i].r)) {
  47.                     Fallen[i] = 1;
  48.                     Fall(i);
  49.                 }
  50.             }
  51.         }
  52.  
  53.         --Apple[App_nr].z;
  54.     }
  55. }
  56.  
  57. int Distance(App A, App B) {
  58.     return (A.x - B.x) * (A.x - B.x) + (A.y - B.y) * (A.y - B.y);
  59. }
Advertisement
Add Comment
Please, Sign In to add comment