답안 #822533

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
822533 2023-08-12T03:46:36 Z GrindMachine 보물 찾기 (CEOI13_treasure2) C++17
8 / 100
1 ms 340 KB
// Om Namah Shivaya

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;

template<typename T> using Tree = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
typedef long long int ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

#define fastio ios_base::sync_with_stdio(false); cin.tie(NULL)
#define pb push_back
#define endl '\n'
#define sz(a) a.size()
#define setbits(x) __builtin_popcountll(x)
#define ff first
#define ss second
#define conts continue
#define ceil2(x, y) ((x + y - 1) / (y))
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define yes cout << "Yes" << endl
#define no cout << "No" << endl

#define rep(i, n) for(int i = 0; i < n; ++i)
#define rep1(i, n) for(int i = 1; i <= n; ++i)
#define rev(i, s, e) for(int i = s; i >= e; --i)
#define trav(i, a) for(auto &i : a)

template<typename T>
void amin(T &a, T b) {
    a = min(a, b);
}

template<typename T>
void amax(T &a, T b) {
    a = max(a, b);
}

#ifdef LOCAL
#include "debug.h"
#else
#define debug(x) 42
#endif

/*



*/

const int MOD = 1e9 + 7;
const int N = 1e5 + 5;
const int inf1 = int(1e9) + 5;
const ll inf2 = ll(1e18) + 5;

#include "treasure.h"

void findTreasure (int n) {
    int a[n+5][n+5];
    memset(a,0,sizeof a);

    for(int i = 1; i <= n; i += 2){
        for(int j = 1; j <= n; j += 2){
            if(i == n) conts;
            if(j == n) conts;

            int tot = countTreasure(i,j,i+1,j+1);

            if(tot == 4){
                a[i][j] = a[i][j+1] = a[i+1][j] = a[i+1][j+1] = 1;
            }
            else if(tot == 3){
                int row1 = countTreasure(i,j,i,j+1);
                int row2 = tot-row1;

                if(row1 == 2){
                    a[i][j] = a[i][j+1] = 1;
                    int x = countTreasure(i+1,j,i+1,j);
                    if(x){
                        a[i+1][j] = 1;
                    }
                    else{
                        a[i+1][j+1] = 1;
                    }
                }
                else{
                    a[i+1][j] = a[i+1][j+1] = 1;
                    int x = countTreasure(i,j,i,j);
                    if(x){
                        a[i][j] = 1;
                    }
                    else{
                        a[i][j+1] = 1;
                    }
                }
            }
            else if(tot == 2){
                int row1 = countTreasure(i,j,i,j+1);
                int row2 = tot-row1;

                if(row1 == 2){
                    a[i][j] = a[i][j+1] = 1;
                }
                else if(row2 == 2){
                    a[i+1][j] = a[i+1][j+1] = 1;
                }
                else{
                    int x = countTreasure(i,j,i,j);
                    if(x){
                        a[i][j] = a[i+1][j+1] = 1;
                    }
                    else{
                        a[i][j+1] = a[i+1][j] = 1;
                    }
                }
            }
            else if(tot == 1){
                int row1 = countTreasure(i,j,i,j+1);
                int row2 = tot-row1;

                if(row1 == 1){
                    int x = countTreasure(i,j,i,j);
                    if(x){
                        a[i][j] = 1;
                    }
                    else{
                        a[i][j+1] = 1;
                    }
                }
                else{
                    int x = countTreasure(i+1,j,i+1,j);
                    if(x){
                        a[i+1][j] = 1;
                    }
                    else{
                        a[i+1][j+1] = 1;
                    }
                }
            }
        }
    }

    if(n&1){
        rep1(i,n){
            a[i][n] = countTreasure(i,n,i,n); 
        }
        rep1(j,n){
            a[n][j] = countTreasure(n,j,n,j);
        }
    }

    rep1(i,n){
        rep1(j,n){
            if(a[i][j]){
                Report(i,j);
            }
        }
    }
}

Compilation message

treasure.cpp: In function 'void findTreasure(int)':
treasure.cpp:80:21: warning: unused variable 'row2' [-Wunused-variable]
   80 |                 int row2 = tot-row1;
      |                     ^~~~
treasure.cpp:125:21: warning: unused variable 'row2' [-Wunused-variable]
  125 |                 int row2 = tot-row1;
      |                     ^~~~
# 결과 실행 시간 메모리 Grader output
1 Partially correct 1 ms 304 KB Output is partially correct - N = 5, K = 509, score = 8
2 Incorrect 1 ms 212 KB Error - no treasure at (r, c) : r = 2, c = 6
3 Incorrect 1 ms 212 KB Error - no treasure at (r, c) : r = 4, c = 11
4 Incorrect 1 ms 212 KB Error - no treasure at (r, c) : r = 2, c = 3
5 Incorrect 1 ms 340 KB Error - no treasure at (r, c) : r = 2, c = 13
6 Incorrect 1 ms 304 KB Error - no treasure at (r, c) : r = 2, c = 35
7 Incorrect 1 ms 340 KB Error - no treasure at (r, c) : r = 4, c = 1
8 Incorrect 1 ms 340 KB Error - no treasure at (r, c) : r = 2, c = 72
9 Incorrect 1 ms 340 KB Error - no treasure at (r, c) : r = 2, c = 4
10 Incorrect 1 ms 340 KB Error - no treasure at (r, c) : r = 2, c = 6