Submission #868085

#TimeUsernameProblemLanguageResultExecution timeMemory
868085alexddRed-blue table (IZhO19_stones)C++17
0 / 100
425 ms3460 KiB
#include<bits/stdc++.h>
using namespace std;
int n,m;
bool aux[1000005];
int fr[1000005];
bool verif(int cntl, int cntc)
{
    if(min(cntl,(n-1)/2) * cntc + cntl * (m-cntc) < cntl * (m-(m-1)/2))
        return 0;
    int cnt0 = (m-(m-1)/2) - (m-cntc);
    int cnt1 = cntc - cnt0;
    if((cnt0>cntc && cntl>0) || (cnt1<(n-(n-1)/2)-(n-cntl) && cntc>0))
        return 0;
    int st=1;
    for(int i=1;i<=m;i++)
        fr[i]=0;
    for(int i=1;i<=cntl;i++)
    {
        for(int j=1;j<=m;j++)
            aux[j]=0;
        for(int j=0;j<cnt0;j++)
            aux[((st+j-1)%m+1)]=1;
        for(int j=1;j<=m;j++)
        {
            if(!aux[j])
                fr[j]++;
        }
        //cout<<"\n";
        if(st==cntc)
            st=1;
        else
            st++;
    }
    for(int i=cntl+1;i<=n;i++)
        for(int j=1;j<=m;j++)
            fr[j]++;
    int cate=0;
    for(int i=1;i<=m;i++)
    {
        if(fr[i]>=n-(n-1)/2)
            cate++;
    }
    if(cate>=cntc)
        return 1;
    return 0;
}
void afis(int cntl, int cntc)
{
    int cnt0 = (m-(m-1)/2) - (m-cntc);
    int cnt1 = cntc - cnt0;
    int st=1;
    for(int i=1;i<=cntl;i++)
    {
        for(int j=1;j<=m;j++)
            aux[j]=0;
        for(int j=0;j<cnt0;j++)
            aux[((st+j-1)%m+1)]=1;
        for(int j=1;j<=m;j++)
        {
            if(aux[j])
                cout<<'+';
            else
                cout<<'-';
        }
        cout<<"\n";
        if(st==cntc)
            st=1;
        else
            st++;
    }
    for(int i=cntl+1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
            cout<<'-';
        cout<<"\n";
    }
}
signed main()
{
    //ios_base::sync_with_stdio(0);cin.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
        cin>>n>>m;
        int mxm=-1,carel,carec;
        for(int cntl=0;cntl<=n;cntl++)
        {
            for(int cntc=0;cntc<=m;cntc++)
            {
                if(cntl+cntc>mxm && verif(cntl,cntc))
                {
                    mxm=cntl+cntc;
                    carel=cntl;
                    carec=cntc;
                }
            }
        }
        //cout<<mxm<<"  "<<carel<<" "<<carec<<"\n";
        cout<<mxm<<"\n";
        afis(carel,carec);
    }
    return 0;
}

Compilation message (stderr)

stones.cpp: In function 'void afis(int, int)':
stones.cpp:50:9: warning: unused variable 'cnt1' [-Wunused-variable]
   50 |     int cnt1 = cntc - cnt0;
      |         ^~~~
stones.cpp: In function 'int main()':
stones.cpp:101:13: warning: 'carec' may be used uninitialized in this function [-Wmaybe-uninitialized]
  101 |         afis(carel,carec);
      |         ~~~~^~~~~~~~~~~~~
stones.cpp:101:13: warning: 'carel' may be used uninitialized in this function [-Wmaybe-uninitialized]
#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...