QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#717362#5438. Half MixedDreamLover1WA 9ms3788kbC++173.3kb2024-11-06 17:43:212024-11-06 17:43:24

Judging History

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

  • [2024-11-06 17:43:24]
  • 评测
  • 测评结果:WA
  • 用时:9ms
  • 内存:3788kb
  • [2024-11-06 17:43:21]
  • 提交

answer

// Created by YuanGodFollower 
// Time : 2024-11-06 15:30:38
#include <bits/stdc++.h>
using namespace std;
#ifdef DEBUG
#define debug(...) logger(#__VA_ARGS__, __VA_ARGS__)
template<typename ...Args>
void logger(string vars, Args&&... values) {
    cout << vars << " = ";
    string delim = "";
    (..., (cout << delim << values, delim = ", "));
    cout<<'\n';
}
#else
#define debug(...) (void)0
#endif
#define int long long
using ll = long long;
const int N = 1e6;
const int INF = 1e9 + 10;
const int upb = sqrt((N * N + N) / 2 + 1);

int closest(int x)
{
    int l = 1, r = upb;
    while(l + 1 < r)
    {
        int mid = l + r >> 1;
        if((mid + 1) * mid <= x) l = mid;
        else r = mid;
    }
    return l;
}

void solve()
{
    int n,m;cin>>n>>m;
    int no = 0;
    int jd = (((n * n) + n) / 2) * (((m * m) + m) / 2);
    if(jd % 2 == 1)
    {
        cout<<"No\n";
    }
    else
    {
        int sm = m * m + m;
        sm /= 2;
        vector<int> ans;
        if(sm == 2 * m) ans = vector<int>(m,1);
        else
        {
            while(sm > 1)
            {
                int sub = closest(sm);
                ans.push_back(sub);
                sm -= (sub + 1) * sub;
            }

        }
        // for(auto&& i : ans) cout<<i<<' ';
        // cout<<'\n';

        int sum = 0;
        for(auto&& i : ans) sum += i;
        if(sum != m)
        {
            no++;
        }
        else
        {
            vector<int> ot;
            int outpt = 1;
            for(auto&& i : ans)
            {
                for(int j = 0;j < i;j++)
                {
                    ot.push_back(outpt);
                }
                outpt ^= 1;
            }

            cout<<"Yes\n";
            for(int i = 0;i < n;i++)
            {
                for(int j = 0;j < m;j++)
                {
                    cout<<ot[j]<<' ';
                }
                cout<<'\n';
            }
        }

        if(no == 0) return;

        swap(n,m);
        sm = m * m + m;
        // cerr<<sm;
        ans = vector<int>();
        sm /= 2;
        if(sm == 2 * m) ans = vector<int>(m,1);
        else
        {
            while(sm > 1)
            {
                int sub = closest(sm);
                ans.push_back(sub);
                sm -= (sub + 1) * sub;
            }

        }

        // for(auto&& i : ans) cout<<i<<" ";
        // cout<<'\n';

        sum = 0;
        for(auto&& i : ans) sum += i;
        if(sum != m)
        {
            no++;
        }
        else
        {
            vector<int> ot;
            int outpt = 1;
            for(auto&& i : ans)
            {
                for(int j = 0;j < i;j++)
                {
                    ot.push_back(outpt);
                }
                outpt ^= 1;
            }

            cout<<"Yes\n";
            for(int j = 0;j < m;j++)
            {
                for(int i = 0;i < n;i++)
                {
                    cout<<ot[j]<<' ';
                }
                cout<<'\n';
            }

            
        }

        if(no == 1) return;

        cout<<"No\n";



    }
    
}

signed main()
{
    cin.tie(0)->sync_with_stdio(false);
    int t;cin>>t;
    while(t--) solve();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3596kb

input:

2
2 3
1 1

output:

Yes
1 0 1 
1 0 1 
No

result:

ok OK, Accepted. (2 test cases)

Test #2:

score: -100
Wrong Answer
time: 9ms
memory: 3788kb

input:

5382
1 1
1 2
2 1
1 3
2 2
3 1
1 4
2 3
3 2
4 1
1 5
2 4
3 3
4 2
5 1
1 6
2 5
3 4
4 3
5 2
6 1
1 7
2 6
3 5
4 4
5 3
6 2
7 1
1 8
2 7
3 6
4 5
5 4
6 3
7 2
8 1
1 9
2 8
3 7
4 6
5 5
6 4
7 3
8 2
9 1
1 10
2 9
3 8
4 7
5 6
6 5
7 4
8 3
9 2
10 1
1 11
2 10
3 9
4 8
5 7
6 6
7 5
8 4
9 3
10 2
11 1
1 12
2 11
3 10
4 9
5 8
6 ...

output:

No
No
No
Yes
1 0 1 
No
Yes
1 
0 
1 
Yes
1 1 0 1 
Yes
1 0 1 
1 0 1 
Yes
1 1 
0 0 
1 1 
Yes
1 
1 
0 
1 
No
Yes
1 1 0 1 
1 1 0 1 
Yes
1 0 1 
1 0 1 
1 0 1 
Yes
1 1 
1 1 
0 0 
1 1 
No
No
No
Yes
1 1 0 1 
1 1 0 1 
1 1 0 1 
Yes
1 0 1 
1 0 1 
1 0 1 
1 0 1 
No
No
Yes
1 1 1 1 0 0 1 
No
Yes
1 1 1 1 1 
0 0 0 0 0...

result:

wrong answer Wrong Verdict (test case 29)