提出 #66541145
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using pll = pair<ll, ll>;
using int128 = __int128;
using State = string::const_iterator;
class ParseError {};
#define rep(i, n) for(ll i = 0; i < (n); i++)
#define reps(i, l, r) for(ll i = (l); i < (r); i++)
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define endl "\n";
const ll INF = LLONG_MAX / 4;
const ld inf = numeric_limits<long double>::max() / (ld)4;
const ll mod1 = 1000000007;
const ll mod2 = 998244353;
const ld pi = 3.1415926535897;
const ll Hash = (1ll << 61) - 1;
ll dx[8] = {1, 1, 0, -1, -1, -1, 0, 1};
ll dy[8] = {0, -1, -1, -1, 0, 1, 1, 1};
template <typename T>
bool chmax(T &a, const T& b) {
if (a < b) { a = b; return true; }
return false;
}
template <typename T>
bool chmin(T &a, const T& b) {
if (a > b) { a = b; return true; }
return false;
}
template <ll mod>
struct modint {
ll x;
modint() : x(0) {}
modint(ll y) : x(y >= 0 ? y % mod : (mod - (-y) % mod) % mod) {}
modint &operator+=(const modint &p) {
if ((x += p.x) >= mod) {
x -= mod;
}
return *this;
}
modint &operator-=(const modint &p) {
if ((x += mod - p.x) >= mod) {
x -= mod;
}
return *this;
}
modint &operator*=(const modint &p) {
x = (ll)(1ll * x * p.x % mod);
return *this;
}
modint &operator/=(const modint &p) {
*this *= p.inverse();
return *this;
}
modint operator-() const { return modint(-x); }
modint operator+(const modint &p) const { return modint(*this) += p; }
modint operator-(const modint &p) const { return modint(*this) -= p; }
modint operator*(const modint &p) const { return modint(*this) *= p; }
modint operator/(const modint &p) const { return modint(*this) /= p; }
bool operator==(const modint &p) const { return x == p.x; }
bool operator!=(const modint &p) const { return x != p.x; }
friend ostream &operator<<(ostream &os, const modint &p) { return os << p.x; }
friend istream &operator>>(istream &is, modint &a) {
ll t; is >> t;
a = modint<mod>(t);
return (is);
}
modint inverse() const {
int a = x, b = mod, u = 1, v = 0, t;
while (b > 0) {
t = a / b;
swap(a -= t * b, b);
swap(u -= t * v, v);
}
return modint(u);
}
modint pow(ll n) const {
modint ret(1), mul(x);
while (n > 0) {
if (n & 1) ret *= mul;
mul *= mul;
n >>= 1;
}
return ret;
}
static ll get_mod() { return mod; }
};
struct Edge {
ll from, to, cost;
Edge (ll from, ll to, ll cost = 1ll) : from(from), to(to), cost(cost) {}
};
void solve() {
ll N; cin >> N;
string S; cin >> S;
pll ans = make_pair(N - 1, N - 1);
rep(i, N - 1) {
if (S[i] > S[i + 1]) {
ans.first = i;
ll pos = i + 1;
while (pos < N && S[i] >= S[pos]) { pos++; }
ans.second = pos - 1;
break;
}
}
rep(i, N) {
if (i != ans.first) cout << S[i];
if (i == ans.second) cout << S[ans.first];
}
cout << endl;
}
int main() {
ll T = 1;
cin >> T;
while (T--) solve();
}
提出情報
| 提出日時 |
|
| 問題 |
D - String Rotation |
| ユーザ |
Oxojo |
| 言語 |
C++ 23 (gcc 12.2) |
| 得点 |
400 |
| コード長 |
3089 Byte |
| 結果 |
AC |
| 実行時間 |
25 ms |
| メモリ |
3696 KiB |
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
400 / 400 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00_sample_01.txt |
| All |
00_sample_01.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_01.txt |
AC |
1 ms |
3380 KiB |
| 01_test_01.txt |
AC |
25 ms |
3472 KiB |
| 01_test_02.txt |
AC |
25 ms |
3492 KiB |
| 01_test_03.txt |
AC |
25 ms |
3628 KiB |
| 01_test_04.txt |
AC |
25 ms |
3444 KiB |
| 01_test_05.txt |
AC |
3 ms |
3568 KiB |
| 01_test_06.txt |
AC |
3 ms |
3636 KiB |
| 01_test_07.txt |
AC |
3 ms |
3472 KiB |
| 01_test_08.txt |
AC |
3 ms |
3484 KiB |
| 01_test_09.txt |
AC |
2 ms |
3568 KiB |
| 01_test_10.txt |
AC |
2 ms |
3608 KiB |
| 01_test_11.txt |
AC |
3 ms |
3636 KiB |
| 01_test_12.txt |
AC |
3 ms |
3612 KiB |
| 01_test_13.txt |
AC |
3 ms |
3504 KiB |
| 01_test_14.txt |
AC |
3 ms |
3696 KiB |
| 01_test_15.txt |
AC |
3 ms |
3628 KiB |
| 01_test_16.txt |
AC |
3 ms |
3468 KiB |
| 01_test_17.txt |
AC |
8 ms |
3500 KiB |