Submission #519835

#TimeUsernameProblemLanguageResultExecution timeMemory
519835MonarchuwuScissors and Tape (CEOI19_scissors)C++17
5 / 100
1096 ms62964 KiB
#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 (m1 < n1) return false; m2 = max(T[0].ff, T[2].ff); n2 = max(T[0].ss, T[2].ss); return m2 == n2; } void solve() { // m1 > m2 if (m1 * 2 <= m2) { 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'; } else { if (m1 > m2) { // n1 < n2 cout << "scissors\n"; cout << "0 2\n"; cout << "4 "; cout << 0 << ' ' << 0 << ' '; cout << m2 << ' ' << 0 << ' '; cout << m2 << ' ' << n1 << ' '; cout << 0 << ' ' << n1 << '\n'; cout << "4 "; cout << m2 << ' ' << 0 << ' '; cout << m1 << ' ' << 0 << ' '; cout << m1 << ' ' << n1 << ' '; cout << m2 << ' ' << n1 << '\n'; cout << "tape\n"; cout << "2 1 2\n"; cout << "4 "; cout << 0 << ' ' << 0 << ' '; cout << m2 << ' ' << 0 << ' '; cout << m2 << ' ' << n1 << ' '; cout << 0 << ' ' << n1 << '\n'; cout << "4 "; cout << 0 << ' ' << n1 << ' '; cout << m2 << ' ' << n1 << ' '; cout << m2 << ' ' << n2 << ' '; cout << 0 << ' ' << n2 << '\n'; cout << "4\n"; for (pii x : T) cout << x.ff << ' ' << x.ss << ' '; cout << '\n'; } else { // m1 < m2 && n1 > n2 cout << "scissors\n"; cout << "0 2\n"; cout << "4 "; cout << 0 << ' ' << 0 << ' '; cout << m1 << ' ' << 0 << ' '; cout << m1 << ' ' << n2 << ' '; cout << 0 << ' ' << n2 << '\n'; cout << "4 "; cout << 0 << ' ' << n2 << ' '; cout << m1 << ' ' << n2 << ' '; cout << m1 << ' ' << n1 << ' '; cout << 0 << ' ' << n1 << '\n'; cout << "tape\n"; cout << "2 1 2\n"; cout << "4 "; cout << 0 << ' ' << 0 << ' '; cout << m1 << ' ' << 0 << ' '; cout << m1 << ' ' << n2 << ' '; cout << 0 << ' ' << n2 << '\n'; cout << "4 "; cout << m1 << ' ' << 0 << ' '; cout << m2 << ' ' << 0 << ' '; cout << m2 << ' ' << n2 << ' '; cout << m1 << ' ' << n2 << '\n'; 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...