Submission #1246990

#TimeUsernameProblemLanguageResultExecution timeMemory
1246990KindaGoodGamesScissors and Tape (CEOI19_scissors)C++20
0 / 100
0 ms328 KiB
#include<bits/stdc++.h>

using namespace std;

struct Point{
    int x, y;

    Point(){}
    Point(int x, int y){
        this->x = x;
        this->y = y;
    }

    friend istream& operator>>(istream& in, Point& p){
        in >> p.x >> p.y;
        return in;
    } 

    void out(){
        cout << x << " " << y << " ";
    }
};

struct Rect{
    Point a,b,c,d;

    friend istream& operator>>(istream& in, Rect& r){
        int x1, y1;
        int x2, y2;
        int x3, y3;
        int x4, y4;
        in >> x1 >> y1 >> x2 >> y2 >> x3>> y3 >> x4 >> y4;
        r = Rect(min({x1,x2,x3,x4}),min({y1,y2,y3,y4}),max({x1,x2,x3,x4}),max({y1,y2,y3,y4}));
        return in;
    } 

    Rect(int x1, int y1, int x2, int y2){
        a = Point(x1,y1);
        b = Point(x2,y1);
        c = Point(x2,y2);
        d = Point(x1,y2);
    }
    Rect(){}

    int xLen(){
        return max({a.x,b.x,c.x,d.x});
    }

    int yLen(){
        return max({a.y,b.y,c.y,d.y});
    }

    void output(){
        cout << 4 << " ";
        
        // DL
        a.out();b.out();c.out();d.out();
        cout << endl;
    }
};

int main(){
    int n1, n2;
    Rect S, T;
    cin >> n1 >> S >> n2 >> T;
    
    if(S.xLen() == T.xLen() && S.yLen() == T.yLen()){
        // do nothing
        return 0;
    }

    int cnt = S.xLen()/T.xLen();
    int curheight = S.yLen();
    int len = T.xLen(); 
 
    int curpos = 0;

    cout << "scissors" << endl;
    cout << 0 << " " << cnt << endl;

    vector<Rect> rects(cnt+1); 
    for(int i = 1; i <= cnt; i++){ 
        
        rects[i] = Rect(curpos,0,curpos+len,curheight);
        rects[i].output();

        curpos += len;
    }

    cout << "tape" << endl << cnt << " ";
    for(int i = 1; i <= cnt; i++){
        cout << i <<" ";
    }
    cout << endl;

    int py = 0;
    for(int i = 1; i <= cnt; i++){
        
        // rects[i].output();
        Rect r = Rect(0,py,T.xLen(),py+S.yLen());
        r.output();
        py += S.yLen();
    }
    T.output();
}
#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...