提出 #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
結果
AC × 1
AC × 18
セット名 テストケース
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