結果
| 問題 |
No.78 クジ付きアイスバー
|
| コンテスト | |
| ユーザー |
Dadarithm
|
| 提出日時 | 2015-10-17 22:56:18 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 953 bytes |
| コンパイル時間 | 1,148 ms |
| コンパイル使用メモリ | 62,608 KB |
| 実行使用メモリ | 13,640 KB |
| 最終ジャッジ日時 | 2024-10-06 18:23:07 |
| 合計ジャッジ時間 | 7,756 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 1 TLE * 1 -- * 33 |
ソースコード
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
typedef long long ll;
int main()
{
ll N, K; string S, bS;
cin >> N >> K >> S;
if (K < S.size())
S.resize(K);
bS = S;
ll ans = 0;
ll left = 0;
ll counter = K;
bool flag = true;
while (counter != 0)
{
if (left == 0)
{
if (flag && ans != 0 && (K - counter) % N == 0)
{
ll T = K - counter;
ans = ans * (K / T);
counter = K % T;
flag = false;
continue;
}
++ans;
if (S.front() == '1')
++left;
else if (S.front() == '2')
left = left + 2;
S.erase(S.begin(), S.begin() + 1);
--counter;
}
else
{
while (!S.empty() && left != 0)
{
if (S.front() == '1')
++left;
else if (S.front() == '2')
left = left + 2;
S.erase(S.begin(), S.begin() + 1);
--counter;
--left;
}
}
if (S.empty() && counter != 0)
S = bS;
}
cout << ans << endl;
return 0;
}
Dadarithm