Advertisement
juanjo12x

SRM_508_Div_2_250

Aug 22nd, 2014
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.12 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <cstring>
  5. #include <string>
  6. #include <cctype>
  7. #include <stack>
  8. #include <bitset>
  9. #include <queue>
  10. #include <list>
  11. #include <vector>
  12. #include <map>
  13. #include <set>
  14. #include <iterator>
  15. #include <sstream>
  16. #include <stdlib.h>
  17. #include <cmath>
  18. #define FOR(i,A) for(typeof (A).begin() i = (A).begin() ; i != (A).end() ; i++)
  19. #define debug( x ) cout << #x << " = " << x << endl
  20. #define clr(v,x) memset( v, x , sizeof v )
  21. #define all(x) (x).begin() , (x).end()
  22. #define rall(x) (x).rbegin() , (x).rend()
  23. #define TAM 110
  24.  
  25. using namespace std;
  26.  
  27. typedef pair<int,int> ii ;
  28. typedef long long ll ;
  29. typedef long double ld ;
  30. typedef pair<int,ii> pii ;
  31. int t,n;vector <int> X;vector <int> Y; vector <int> R;
  32. int dist(int x0, int y0, int x, int y) {
  33.             return abs(x-x0) + abs(y-y0);
  34. }
  35.  
  36. int main() {
  37.     int aux;
  38.     scanf("%d",&t);
  39.     while(t--){
  40.         scanf("%d",&n);
  41.         for(int i=0;i<n;i++){
  42.             scanf("%d",&aux);
  43.             X.push_back(aux);
  44.         }
  45.         for(int i=0;i<n;i++){
  46.             scanf("%d",&aux);
  47.             Y.push_back(aux);
  48.         }
  49.         for(int i=0;i<n;i++){
  50.             scanf("%d",&aux);
  51.             R.push_back(aux);
  52.         }
  53.          int m[410][410];
  54.          /*se utiliza el +205 debido a los negativos,
  55.          ya que estamos trabajando en un arreglo de 2 dimensiones*/
  56.          memset(m, 0, sizeof(m));
  57.  
  58.             for (int k = 0; k < X.size(); ++k) {
  59.                 for (int i = 0; i < 410; ++i) {
  60.                     for (int j = 0; j < 410; ++j) {
  61.                         if (dist(X[k]+205, Y[k]+205, j, i) <= R[k])
  62.                             m[j][i]++;/*expando la cuenta de los posibles candidatos a
  63.                             celdas*/
  64.                     }
  65.                 }
  66.             }
  67.  
  68.             int res = 0;
  69.  
  70.             for (int i = 0; i < 410; ++i) {
  71.                 for (int j = 0; j < 410; ++j) {
  72.                     if (m[j][i] == X.size()) res++;/*si hubo interseccion para todos
  73.                     los casos de X, GG */
  74.                 }
  75.             }
  76.  
  77.             printf("%d\n",res);
  78.             X.clear();Y.clear();R.clear();
  79.     }
  80.  
  81.  
  82.  
  83.     return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement