Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*#pragma GCC optimize("Ofast")
- #pragma GCC optimize("unroll-loops")
- #pragma GCC target("avx,avx2,fma")*/
- // only when really needed
- /* GNU G++17 7.3.0: No long long for faster code
- GNU G++17 9.2.0 (64 bit, msys 2): Long long only for faster code */
- #include <bits/stdc++.h>
- #define for1(i,a,b) for (int i = a; i <= b; i++)
- #define for2(i,a,b) for (int i = a; i >= b; i--)
- #define int long long
- #define sz(a) (int)a.size()
- #define pii pair<int,int>
- /*
- __builtin_popcountll(x) : Number of 1-bit
- __builtin_ctzll(x) : Number of trailing 0
- */
- #define PI 3.1415926535897932384626433832795
- #define INF 1000000000000000000
- #define MOD 1000000007
- #define MOD2 1000000009
- #define EPS 1e-6
- using namespace std;
- int n, e, a[100005];
- set<int> se;
- signed main() {
- ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
- freopen("GALON.inp", "r", stdin);
- freopen("GALON.out", "w", stdout);
- cin >> n >> e;
- for1(i,1,n-1) a[i] = i + 1;
- int sum = n, br = 1;
- while (sum <= e) {
- sum += br;
- br++;
- }
- sum -= br;
- br--;
- reverse(a + n - br, a + n);
- int pos = n - br - 1, cur = n - 1;
- for1(i,sum+1,e) {
- if (cur == pos) {
- pos--;
- cur = n - 1;
- }
- swap(a[pos], a[cur]);
- cur--;
- }
- for1(i,1,n-1) se.insert(i);
- for1(i,1,n-1) {
- auto it = prev(se.lower_bound(a[i]));
- cout << a[i] << " " << *it << "\n";
- se.erase(a[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment