이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
#define ff first
#define ss second
const int N = 1000;
int n, m;
vector<pii> S, T;
void scissors() {
    m = max(S[0].ff, S[2].ff);
    n = max(S[0].ss, S[2].ss);
    cout << "scissors\n";
    cout << "0 " << n * m << '\n';
    for (int i = 0; i < m; ++i)
        for (int j = 0; j < n; ++j) {
            cout << "4 ";
            cout << i << ' ' << j << ' ';
            cout << i + 1 << ' ' << j << '\n';
            cout << i + 1 << ' ' << j + 1 << ' ';
            cout << i << ' ' << j + 1 << ' ';
        }
}
void tape() {
    m = max(T[0].ff, T[2].ff);
    n = max(T[0].ss, T[2].ss);
    cout << "tape\n";
    cout << m * n << ' ';
    for (int i = 1; i <= m * n; ++i) cout << i << ' ';
    cout << '\n';
    for (int i = 0; i < m; ++i)
        for (int j = 0; j < n; ++j) {
            cout << "4 ";
            cout << i << ' ' << j << ' ';
            cout << i + 1 << ' ' << j << '\n';
            cout << i + 1 << ' ' << j + 1 << ' ';
            cout << i << ' ' << j + 1 << ' ';
        }
    cout << "4\n";
    for (pii x : T) cout << x.ff << ' ' << x.ss << ' ';
    cout << '\n';
}
namespace sub2 {
    int m1, n1, m2, n2;
    bool check() {
        m1 = max(S[0].ff, S[2].ff);
        n1 = max(S[0].ss, S[2].ss);
        if (m < n) return false;
        m2 = max(T[0].ff, T[2].ff);
        n2 = max(T[0].ss, T[2].ss);
        return m == n;
    }
    void solve() {
        cout << "scissors\n";
        cout << "0 " << m1 / m2 << '\n';
        for (int i = 0; i < m1; i += m2) {
            cout << "4 ";
            cout << i << ' ' << 0 << ' ';
            cout << i + m2 << ' ' << 0 << '\n';
            cout << i + m2 << ' ' << n1 << ' ';
            cout << i << ' ' << n1 << ' ';
        }
        cout << "tape\n";
        cout << m1 / m2 << ' ';
        for (int i = 1; i <= m1 / m2; ++i) cout << i << ' ';
        cout << '\n';
        for (int j = 0; j < n2; j += n1) {
            cout << "4 ";
            cout << 0 << ' ' << j << ' ';
            cout << m2 << ' ' << j << '\n';
            cout << m2 << ' ' << j + n1 << ' ';
            cout << 0 << ' ' << j + n1 << ' ';
        }
        cout << "4\n";
        for (pii x : T) cout << x.ff << ' ' << x.ss << ' ';
        cout << '\n';
    }
}
int main() {
    cin.tie(NULL)->sync_with_stdio(false);
    cin >> n;
    S.resize(n);
    for (pii &x : S) cin >> x.ff >> x.ss;
    cin >> m;
    T.resize(m);
    for (pii &x : T) cin >> x.ff >> x.ss;
    if (sub2::check()) sub2::solve();
    else {
        scissors();
        tape();
    }
}
/**  /\_/\
 *  (= ._.)
 *  / >0  \>1
**/
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |