結果
問題 |
No.3184 Make Same
|
ユーザー |
![]() |
提出日時 | 2025-06-20 21:50:28 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 320 ms / 2,000 ms |
コード長 | 3,164 bytes |
コンパイル時間 | 2,315 ms |
コンパイル使用メモリ | 219,564 KB |
実行使用メモリ | 7,844 KB |
最終ジャッジ日時 | 2025-06-20 21:50:44 |
合計ジャッジ時間 | 15,373 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 24 |
ソースコード
#pragma region #include<algorithm> #include<array> #include<bitset> #include<cassert> #include<chrono> #include<cinttypes> #include<climits> #include<cmath> #include<complex> #include<cstdio> #include<cstring> #include<deque> #include<functional> #include<iomanip> #include<iostream> #include<iterator> #include<limits> #include<map> #include<numeric> #include<queue> #include<random> #include<set> #include<sstream> #include<stack> #include<string> #include<tuple> #include<type_traits> #include<unordered_map> #include<unordered_set> #include<utility> #include<vector> using namespace std; //# pragma GCC target("avx2") //# pragma GCC optimize("O3") struct Init{ Init(){ std::cin.tie(0); ios::sync_with_stdio(false); cout << setprecision(20) << fixed; } }init; using ll = long long; using ull = unsigned long long; using ld = long double; #define all(x) begin((x)), end((x)) #define pb push_back #define mp make_pair #define mt make_tuple #define uq(v) v.erase(unique(begin(v), end(v)), end(v)) #define _overload4(_1,_2,_3,_4,name,...) name #define _overload3(_1,_2,_3,name,...) name #define _rep1(n) for(int i = 0; i < n; ++i) #define _rep2(i,n) for(int i = 0; i < n; ++i) #define _rep3(i,a,b) for(int i = a; i < b; ++i) #define _rep4(i,a,b,c) for(int i = a; i < b; i += c) #define rep(...) _overload4(__VA_ARGS__,_rep4,_rep3,_rep2,_rep1)(__VA_ARGS__) #define _rrep1(n) for(int i = (n) - 1; i >= 0; --i) #define _rrep2(i,n) for(int i = (n) - 1; i >= 0; --i) #define _rrep3(i,a,b) for(int i = (b) - 1; i >= (a); --i) #define _rrep4(i,a,b,c) for(int i = a + (b - a - 1) / c*c; i >= a; i -= c) #define rrep(...) _overload4(__VA_ARGS__,_rrep4,_rrep3,_rrep2,_rrep1)(__VA_ARGS__) template<class T> using pq = priority_queue<T>; template<class T> using pq_g = priority_queue<T, vector<T>, greater<T>>; template<class T> bool chmax(T &a, const T &b){ if(a < b){a = b; return 1; } return 0; } template<class T> bool chmin(T &a, const T &b){ if(a > b){a = b; return 1; } return 0; } template<class T> auto min(const T& a){ return *min_element(all(a)); } template<class T> auto max(const T& a){ return *max_element(all(a)); } constexpr ull INF = (1ULL << 61) + (1ULL << 30); constexpr int inf = (1 << 30); constexpr int dx[] = {1, 0, -1, 0, 1, 1, -1, -1}; constexpr int dy[] = {0, 1 ,0, -1, 1, -1, 1, -1}; #pragma endregion void solve(){ int N; cin >> N; vector<ll> A(N); rep(i, N) cin >> A[i]; vector<tuple<int, int, ll>> op; rep(i, 30){ if(A[0] == A[N - 1]) break; rep(j, N){ if(j == N - 1){ op.pb(mt(1, N - 1, A[N - 1] - A[0])); ll ad = A[N - 1] - A[0]; rep(k, N - 1) A[k] += ad; break; } ll sub = A[j + 1] - A[0]; if(A[j] + sub > A[N - 1]){ op.pb(mt(1, j, A[j] - A[0])); ll ad = A[j] - A[0]; rep(k, j) A[k] += ad; break; } } sort(all(A)); } cout << op.size() << "\n"; for(auto [l, r, v]: op) cout << l << " " << r << " " << v << "\n"; } int main(){ int T; T = 1; //cin >> T; rep(i, T) solve(); }