답안 #315538

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
315538 2020-10-23T03:56:14 Z daniel920712 Costinland (info1cup19_costinland) C++14
51.3312 / 100
2 ms 464 KB
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <queue>

using namespace std;
long long con[65][65]={0};
vector < pair < long long , long long > > all;
vector < char > ans[65];
priority_queue < pair < long long , pair < long long , long long > > ,vector < pair < long long , pair < long long , long long > > >, less < pair < long long , pair < long long , long long > > > > how;
int main()
{
    long long i,j,N=0,M=0,now=0,n,last;
    scanf("%lld",&n);
    con[1][1]=1;
    for(i=1;i<=60;i++)
    {
        for(j=1;j<=60;j++)
        {
            if(i>1&&con[i-1][j]>=0) con[i][j]+=con[i-1][j];
            else if(i>1) con[i][j]=-1e18;
            if(j>1&&con[i][j-1]>=0) con[i][j]+=con[i][j-1];
            else if(j>1) con[i][j]=-1e18;
            if(con[i][j]>n) con[i][j]=-1e18;
            else how.push(make_pair(con[i][j],make_pair(i,j)));
        }
    }
    while(n)
    {
        //printf("%lld\n",n);
        while(n<how.top().first) how.pop();
        all.push_back(how.top().second);
        n-=how.top().first;
        N=max(N,how.top().second.first);
        M+=how.top().second.second;
    }
    //printf("%lld %lld\n",N,M);
    for(i=0;i<=N;i++)
    {
        for(j=0;j<M;j++) ans[i].push_back('X');


    }
    for(j=0;j<M;j++) ans[0][j]='r';

    for(auto i:all)
    {
        //printf("%lld %lld\n",i.first,i.second);
        ans[0][now]='X';
        last=now;
        for(j=1;j<=N;j++) ans[j][now+i.second-1]='d';
        for(j=1;j<=N-i.first;j++) ans[j][now]='d';
        now+=i.second;
    }
    ans[0][last]='d';
    for(i=0;i<N;i++) ans[i][M-1]='d';
    for(i=0;i<M;i++) ans[N][i]='r';
    ans[N][M-1]='.';
    printf("%lld %lld\n",N+1,M);
    for(i=0;i<=N;i++)
    {
        for(j=0;j<M;j++) printf("%c",ans[i][j]);
        printf("\n");
    }

    return 0;
}

Compilation message

costinland.cpp: In function 'int main()':
costinland.cpp:15:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   15 |     scanf("%lld",&n);
      |     ~~~~~^~~~~~~~~~~
costinland.cpp:14:35: warning: 'last' may be used uninitialized in this function [-Wmaybe-uninitialized]
   14 |     long long i,j,N=0,M=0,now=0,n,last;
      |                                   ^~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 460 KB Correct! Your size: 4
2 Correct 1 ms 460 KB Correct! Your size: 5
3 Partially correct 1 ms 460 KB Partially Correct! Your size: 6
4 Partially correct 1 ms 460 KB Partially Correct! Your size: 7
5 Partially correct 1 ms 460 KB Partially Correct! Your size: 8
6 Partially correct 1 ms 460 KB Partially Correct! Your size: 9
7 Partially correct 1 ms 460 KB Partially Correct! Your size: 11
8 Partially correct 1 ms 460 KB Partially Correct! Your size: 15
9 Partially correct 1 ms 460 KB Partially Correct! Your size: 20
# 결과 실행 시간 메모리 Grader output
1 Partially correct 2 ms 460 KB Partially Correct! Your size: 122
2 Partially correct 2 ms 460 KB Partially Correct! Your size: 133
3 Partially correct 2 ms 464 KB Partially Correct! Your size: 125
4 Partially correct 2 ms 460 KB Partially Correct! Your size: 124
5 Partially correct 2 ms 460 KB Partially Correct! Your size: 133
6 Partially correct 2 ms 460 KB Partially Correct! Your size: 138
7 Partially correct 2 ms 460 KB Partially Correct! Your size: 123
8 Partially correct 2 ms 460 KB Partially Correct! Your size: 108