TheMoviesLevelOneDivOne

日課消化。row,seatの数の大きさに始めは戸惑うが、すでに予約されたシートが1つ埋まることで、とりうるペアシートがいくつ減るかを考えれば、特に難しくない。

#include <algorithm>
#include <iostream>
#include <map>
#include <numeric>
#include <set>
#include <sstream>
#include <string>
#include <vector>
using namespace std;

#define FOR(i,s,e) for (int i = int(s); i != int(e); i++)
#define FORIT(i,c) for (typeof((c).begin()) i = (c).begin(); i != (c).end(); i++)
#define ISEQ(c) (c).begin(), (c).end()

class TheMoviesLevelOneDivOne {

public:
	long long find(int n, int m, vector<int> row, vector<int> seat) {
		long long result = (long long) n * (long long) (m-1);
		for(int i=1; i<=n; i++){
			vector<int> tmp;
			for(int j=0; j<(int)row.size(); j++){
				if(row[j] == i){
					int col = seat[j];
					if(col == 1 || col == m) result++;
					for(int k=0;k<(int)tmp.size(); k++){
						if(col == tmp[k]-1 || col == tmp[k]+1){
							result++;
						}
					}

					result -= 2;
					tmp.push_back(seat[j]);
				}
			}
		}

		return result;
	}

};