後ろから配るだけ。vector<int>だとかint配列を使うと死ぬ。
const int N = 44777777 + 1; bool tea[N]; class TheCoffeeTimeDivOne { public: lli serve(int i, const bool type) { lli ret = 0; while (0 < i) { int cap = 7; int j = -1; while (0 < i && cap) { if (tea[i] == type) { j = max(j, i); --cap; } --i; } if (j != -1) ret += 47 + 2 * j; } return ret; } long long find(int n, vector <int> T) { fill(tea, tea + N, false); for (int i = 0; i < T.size(); ++i) { tea[T[i]] = true; } return serve(n, false) + serve(n, true) + n * 4; } };
0 件のコメント :
コメントを投稿