後ろから配るだけ。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 件のコメント :
コメントを投稿