답안 #599989

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
599989 2022-07-20T11:16:57 Z Jomnoi Scissors and Tape (CEOI19_scissors) C++17
0 / 100
1 ms 212 KB
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;

int id, X1, X2, Y1, Y2;
int nowx, nowy;
vector <pair <int, int>> points, require;
vector <vector <pair <int, int>>> shapes;
vector <int> idlist;

void scissors(int idA, vector <vector <pair <int, int>>> remains) {
    cout << "scissors\n";
    cout << idA << ' ' << remains.size() << '\n';

    shapes.pop_back();
    idlist.pop_back();
    nowx = 0;
    nowy = 0;
    for(auto shape : remains) {
        cout << shape.size() << ' ';
        for(auto [x, y] : shape) {
            cout << x << ' ' << y << ' ';
        }
        cout << '\n';

        for(auto &[x, y] : shape) {
            x -= nowx;
            y += nowy;
        }
        shapes.push_back(shape);

        id++;
        idlist.push_back(id);
        nowx += X2;
        nowy += Y1;
    }
}

void tape() {
    cout << "tape\n";
    cout << shapes.size() << ' ';
    for(auto i : idlist) {
        cout << i << ' ';
    }
    cout << '\n';
    for(auto shape : shapes) {
        cout << shape.size() << ' ';
        for(auto [x, y] : shape) {
            cout << x << ' ' << y << ' ';
        }
        cout << '\n';
    }
    cout << require.size() << ' ';
    for(auto [x, y] : require) {
        cout << x << ' ' << y << ' ';
    }
}

int main() {
    cin.tie(nullptr)->sync_with_stdio(false);

    int N;
    cin >> N;

    while(N--) {
        int x, y;
        cin >> x >> y;

        points.emplace_back(x, y);
    }
    idlist.push_back(id);
    shapes.push_back(points);

    cin >> N;

    while(N--) {
        int x, y;
        cin >> x >> y;

        require.emplace_back(x, y);
    }

    X1 = points[2].x, Y1 = points[2].y;
    X2 = require[2].x, Y2 = require[2].y;

    vector <vector <pair <int, int>>> remains;
    remains.push_back({{0, 0}, {0, Y1}, {X2, Y1}, {X2, 0}});
    nowx = X2;
    while(X1 > X2) {
        remains.push_back({{nowx, 0}, {nowx, Y1}, {nowx + X2, Y1}, {nowx + X2, 0}});
        nowx += X2;
        X1 -= X2;
    }
    if(remains.size() > 1) {
        scissors(id, remains);
        tape();
    }
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Operation 1 (tape), polygon 0, vertex 0: Equivalent polygons must not change distance of any side by more than 0.001000, got '3.000000' vs '4.000000', error '0.333333'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Operation 1, Polygon 0: Polygon given in clockwise order, must be counter-clockwise
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Operation 1 (tape), polygon 0, vertex 0: Equivalent polygons must not change distance of any side by more than 0.001000, got '3.000000' vs '4.000000', error '0.333333'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Operation 1 (tape), polygon 0: Equivalent polygons must have same number of vertices (3 != 4)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Operation 1, Polygon 0: Polygon given in clockwise order, must be counter-clockwise
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Operation 1 (tape), polygon 0, vertex 0: Equivalent polygons must not change distance of any side by more than 0.001000, got '3.000000' vs '4.000000', error '0.333333'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Operation 1 (tape), polygon 0, vertex 0: Equivalent polygons must not change distance of any side by more than 0.001000, got '3.000000' vs '4.000000', error '0.333333'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Operation 1 (tape), polygon 0, vertex 0: Equivalent polygons must not change distance of any side by more than 0.001000, got '3.000000' vs '4.000000', error '0.333333'
2 Halted 0 ms 0 KB -