結果
| 問題 | No.1609 String Division Machine |
| コンテスト | |
| ユーザー |
hitonanode
|
| 提出日時 | 2021-07-16 22:52:55 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 3 ms / 2,000 ms |
| コード長 | 1,168 bytes |
| コンパイル時間 | 533 ms |
| コンパイル使用メモリ | 74,744 KB |
| 実行使用メモリ | 7,852 KB |
| 最終ジャッジ日時 | 2025-11-27 10:59:56 |
| 合計ジャッジ時間 | 1,841 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 5 |
| other | AC * 38 |
ソースコード
#include <array>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
#define FOR(i, begin, end) for(int i=(begin),i##_end_=(end);i<i##_end_;i++)
#define IFOR(i, begin, end) for(int i=(end)-1,i##_begin_=(begin);i>=i##_begin_;i--)
#define REP(i, n) FOR(i,0,n)
#define IREP(i, n) IFOR(i,0,n)
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,mmx,avx,avx2")
int main() {
cin.tie(nullptr), ios::sync_with_stdio(false);
string Si;
cin >> Si;
array<char, 26> s;
FOR(n, 1, 27) {
auto S = Si;
bool failed = false;
s.fill(0);
s[0] = n;
IREP(i, S.size()) {
auto &c = S[i];
if (c == '?') {
int t = 0;
while (!s[t]) t++;
c = 'a' + t;
} else {
int j = c - 'a';
while (j >= 0 and !s[j]) j--;
if (j < 0) {
failed = true;
break;
}
s[j]--;
s[c - 'a']++;
}
}
if (!failed) {
cout << S << '\n';
return 0;
}
}
}
hitonanode