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;
	}

};