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