SRM498 div1 medium
map便利。
#include <algorithm> #include <string> #include <vector> #include <iostream> #include <sstream> #include <cstdio> #include <map> typedef long long LL; using namespace std; int ABS(int n) { return (0<n)?n:-n; } class FoxStones { public: int getCount(int N, int M, vector <int> sx, vector <int> sy) { map<vector<int>,LL> ma; for(int x=1;x<=N;x++) for(int y=1;y<=M;y++) { vector<int> v; for(int i=0;i<sx.size();i++) v.push_back(max(ABS(x-sx[i]),ABS(y-sy[i]))); if(ma.find(v)==ma.end()) ma[v]=1; else ma[v]++; } LL ans=1,MOD=1000000009; map<vector<int>,LL>::iterator itr=ma.begin(); for(itr;itr!=ma.end();itr++) { int l=(*itr).second; while(l!=0) ans=ans*l%MOD,l--; } return (int)ans; } };