제출 #90636

#제출 시각아이디문제언어결과실행 시간메모리
90636314rateTreasure (different grader from official contest) (CEOI13_treasure2)C++14
36 / 100
2 ms676 KiB
#include "treasure.h"
#include <bits/stdc++.h>

using namespace std;

const int N=100+5;

int n;

int v[N][N];

int slove(int r1,int c1,int r2,int c2,int lft)
{
    int dr=r2-r1+1;
    int dc=c2-c1+1;
    if(dr<=0 || dc<=0)
    {
        return 0;
    }
    int x;
    if(lft==-1)
    {
        x=countTreasure(r1,c1,r2,c2);
    }
    else
    {
        x=lft;
    }
    if(x==0) return 0;
    if(x==dr*dc)
    {
        for(int r=r1;r<=r2;r++)
        {
            for(int c=c1;c<=c2;c++)
            {
                v[r][c]=1;
            }
        }
        return x;
    }
    int rn=(r1+r2)>>1;
    int cn=(c1+c2)>>1;
    lft-=slove(r1,c1,rn,cn,-1);
    lft-=slove(r1,cn+1,rn,c2,-1);
    lft-=slove(rn+1,c1,r2,cn,-1);
    slove(rn+1,cn+1,r2,c2,lft);
    return x;
}

void findTreasure (int N)
{
    int n=N;
    slove(1,1,n,n,-1);
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(v[i][j])
            {
                Report(i,j);
            }
        }

    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...