QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#702440#7785. Three Rectanglesqiuuu#RE 0ms0kbC++233.7kb2024-11-02 15:59:352024-11-02 15:59:35

Judging History

你现在查看的是最新测评结果

  • [2024-11-02 15:59:35]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:0kb
  • [2024-11-02 15:59:35]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define OPFI(x) freopen(#x".in", "r", stdin);\
                freopen(#x".out", "w", stdout)
#define REP(i, a, b) for(int i=(a); i<=(b); ++i)
#define REPd(i, a, b) for(int i=(a); i>=(b); --i)
inline ll rd(){
    ll r=0, k=1; char c; while(!isdigit(c=getchar())) if(c=='-') k=-k;
    while(isdigit(c)) r=r*10+c-'0', c=getchar(); return r*k;
}
constexpr int MOD=1e9+7;
ll t, H, W, h[10], w[10];
int main(){
    OPFI(test1);
    t=rd();
    while(t--){
        H=rd(), W=rd();
        int tmp=0, flag=0, hhf=0, wwf=0;
        REP(i, 1, 3){
            h[i]=rd(), w[i]=rd();
            if(h[i]==H||w[i]==W) ++tmp;
            if(h[i]==H) ++hhf;
            if(w[i]==W) ++wwf;
            if(h[i]==H&&w[i]==W) flag=1;
        }
        if(flag){
            ll ans=1;
            REP(i, 1, 3) ans=ans*(H-h[i]+1)%MOD*(W-w[i]+1)%MOD;
            printf("%lld\n", ans);
            continue;
        }
        if(tmp==0){
            puts("0");
        }else if(tmp==1){
            if(wwf){
                swap(H, W);
                swap(h[1], w[1]);
                swap(h[2], w[2]);
                swap(h[3], w[3]);
            }
            ll sumh=h[1]+h[2]+h[3]-H;
            ll mnw=W, anw=0;
            REP(i, 1, 3) if(h[i]!=H) mnw=min(mnw, w[i]); else anw=w[i];
            if(mnw+anw>=W&&sumh>=H) puts("4");
            else puts("0");
        }else if(tmp==2){
            if(wwf==2||hhf==2){
                if(wwf){
                    swap(H, W);
                    swap(h[1], w[1]);
                    swap(h[2], w[2]);
                    swap(h[3], w[3]);
                }
                ll sumw=0, anh=0, anw=0;
                REP(i, 1, 3) if(h[i]==H) sumw+=w[i]; else anh=h[i], anw=w[i];
                if(sumw>=W){
                    printf("%lld\n", 2*(H-anh+1)%MOD*(W-anw+1)%MOD);
                }else puts("0");
            }else{
                ll sumh=h[1]+h[2]+h[3]-H;
                ll sumw=w[1]+w[2]+w[3]-W;
                if(sumh>=H&&sumw>=W) puts("4");
                else puts("0");
            }
        }else if(tmp==3){
            if(wwf==3||hhf==3){
                if(wwf){
                    swap(H, W);
                    swap(h[1], w[1]);
                    swap(h[2], w[2]);
                    swap(h[3], w[3]);
                }
                ll s=w[1]+w[2]+w[3];
                if(s>=W){
                    ll ans=0;
                    REP(i, 1, 3){
                        if(s-w[i]>=W){
                            ans=(ans+2*(W-w[i]-1)+2)%MOD;
                            continue;
                        }
                        ll x=w[1], y=w[3];
                        if(i==1) x=w[2];
                        if(i==3) y=w[2];
                        ll top=max(1LL, W-y-w[i]), but=min(W-w[i]-1, x);
                        // cerr<<t<<": "<<top<<" "<<but<<endl;
                        ans=(ans+2*(but-top+1))%MOD;
                        if(w[i]+y>=W) ans=(ans+1)%MOD;
                        if(x+w[i]>=W) ans=(ans+1)%MOD;
                    }
                    printf("%lld\n", ans%MOD);
                }else puts("0");
            }else{
                if(wwf==2){
                    swap(H, W);
                    swap(h[1], w[1]);
                    swap(h[2], w[2]);
                    swap(h[3], w[3]);
                }
                ll sumw=0, anh=0, anw=0;
                REP(i, 1, 3) if(h[i]==H) sumw+=w[i]; else anh=h[i], anw=w[i];
                if(sumw>=W){
                    printf("%lld\n", 2*(H-anh+1)%MOD*(W-anw+1)%MOD);
                }else puts("0");
            }
        }
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Dangerous Syscalls

input:

5
2 2
1 1
1 1
1 1
2 2
1 1
1 2
1 2
2 2
1 1
1 2
2 1
2 2
1 2
1 2
1 2
2 2
1 2
1 2
2 1

output:


result: