Submission #1247263


Source Code Expand

#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <algorithm>
#include <sstream>
#include <cmath>
#include <set>
#include <iomanip>
#include <deque>
#include <stdio.h>
using namespace std;

#define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++)
#define RREP(i,n) for(int (i)=(int)(n)-1;i>=0;i--)
#define FILL(Itr,n) fill((Itr).begin(),(Itr).end(),n)
#define REMOVE(Itr,n) (Itr).erase(remove((Itr).begin(),(Itr).end(),n),(Itr).end())
#define UNIQUE(Itr) sort((Itr).begin(),(Itr).end()); (Itr).erase(unique((Itr).begin(),(Itr).end()),(Itr).end())
#define LBOUND(Itr,val) lower_bound((Itr).begin(),(Itr).end(),(val))
#define UBOUND(Itr,val) upper_bound((Itr).begin(),(Itr).end(),(val))
#define MOD 1000000007
typedef long long ll;
typedef pair<int,int> P;

int M[31][31];

bool check(void) {
    REP(i,30)REP(j,30) if(M[i][j] > 0) return true;
    return false;
}

pair<int,int> max_pos(void) {
    int maxv = -1;
    pair<int,int> ret = make_pair(-1,-1);
    REP(i,30)REP(j,30) {
        if(maxv < M[i][j]) {
            maxv = M[i][j];
            ret = make_pair(i,j);
        }
    }
    return ret;
}

int dx[4] = {0,1,0,-1};
int dy[4] = {1,0,-1,0};
vector<int> idx = {0,1,2,3};
void dfs(int y, int x) {
    if(M[y][x] == 0) return;
    M[y][x]--;
    cout << y+1 << " " << x+1 << endl;
    random_shuffle(idx.begin(),idx.end());
    REP(i,idx.size()) {
        if(x+dx[idx[i]]<0 || x+dx[idx[i]]>=30)continue;
        if(y+dy[idx[i]]<0 || y+dy[idx[i]]>=30)continue;
        if(M[y+dy[i]][x+dx[i]] == M[y][x]) {
            dfs(y+dy[idx[i]],x+dx[idx[i]]);
            return;
        }
    }
}

int main(){
    
    REP(i,30)REP(j,30) cin >> M[i][j];
    
    while(check()) {
        pair<int,int> pos = max_pos();
        dfs(pos.first,pos.second);
    }
    
    return 0;
}

Submission Info

Submission Time
Task A - 高橋君の山崩しゲーム
User kosakkun
Language C++14 (GCC 5.4.1)
Score 622370
Code Size 1915 Byte
Status AC
Exec Time 118 ms
Memory 512 KB

Judge Result

Set Name test_01 test_02 test_03 test_04 test_05 test_06 test_07 test_08 test_09 test_10
Score / Max Score 63276 / 100000 61503 / 100000 62845 / 100000 60384 / 100000 62679 / 100000 62515 / 100000 62158 / 100000 63203 / 100000 61917 / 100000 61890 / 100000
Status
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
Set Name Test Cases
test_01 subtask_01_01.txt
test_02 subtask_01_02.txt
test_03 subtask_01_03.txt
test_04 subtask_01_04.txt
test_05 subtask_01_05.txt
test_06 subtask_01_06.txt
test_07 subtask_01_07.txt
test_08 subtask_01_08.txt
test_09 subtask_01_09.txt
test_10 subtask_01_10.txt
Case Name Status Exec Time Memory
subtask_01_01.txt AC 109 ms 512 KB
subtask_01_02.txt AC 114 ms 512 KB
subtask_01_03.txt AC 110 ms 512 KB
subtask_01_04.txt AC 118 ms 512 KB
subtask_01_05.txt AC 110 ms 512 KB
subtask_01_06.txt AC 111 ms 512 KB
subtask_01_07.txt AC 113 ms 512 KB
subtask_01_08.txt AC 111 ms 512 KB
subtask_01_09.txt AC 116 ms 512 KB
subtask_01_10.txt AC 116 ms 512 KB