SRM 469 div1 easy:TheMoviesLevelOneDivOne
SRM469の練習会に参加しました。結果としてはmedだけ通ってやっぱりそこそこといった結果でした。easyのミスはボケすぎな感じある…
問題:TopCoder Statistics - Problem Statement
解法:予約している人が誰もいなければn行おきにm-1通りの座り方があるのでn*(m-1)通りです。予約している人がいると(#が予約席だとして),
??#??
という席順では(#の左,#)という席順と(#,#の右)という席順はダメです。#が隣り合ってたりすると面倒なのでsetで管理すると楽です。
本番(というか練習会)ではlong long にキャストするの忘れてclimpetさんに1分くらいで落とされました。早い。
以下ソースコード
class TheMoviesLevelOneDivOne { public: long long find(int n, int m, vector <int> row, vector <int> seat) { ll ans = (ll)n*(m-1); int size = row.size(); set<pair<int, int> > used; for (int i = 0; i < size; i++) { if (seat[i]+1 <= m) used.insert(make_pair(row[i], seat[i]+1)); if (seat[i]-1 >= 1) used.insert(make_pair(row[i], seat[i])); } for (auto el : used) { cout << el.first << " " << el.second << endl; } return ans - used.size(); } };