Submission #1400523


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

int h = 50, w = 50, k = 8;
string s[51];
bool f[51][51];

vector<pair<int, int> > make_piece(int y, int x, int l){
    int dy[4] = {1, -1, 0, 0};
    int dx[4] = {0, 0, 1, -1};
    vector<pair<int, int> > res;
    queue<pair<int, int> > q;
    q.push(pair<int, int>(y, x));
    res.push_back(pair<int, int>(y, x));
    f[y][x] = true;
    while(!q.empty()){
        pair<int, int> p = q.front(); q.pop();
        if(res.size() == k) break;
        for(int i = 0; i < 4; i++){
            int ny = p.first + dy[i];
            int nx = p.second + dx[i];
            if(!(0 <= ny && ny < h && 0 <= nx && nx < w) || f[ny][nx]) continue;
            if((s[ny][nx] - '0') < l) continue;
            res.push_back(pair<int, int>(ny, nx));
            q.push(pair<int, int>(ny, nx));
            f[ny][nx] = true;
            if(res.size() == k) break;
        }
    }
    if(res.size() == k) return res;
    for(int i = 0; i < res.size(); i++){
        f[res[i].first][res[i].second] = false;
    }
    res.clear();
    return res;
}

//sample : 17748万, test : 
int main(){
	cin >> h >> w >> k;
	for(int i = 0; i < h; i++) cin >> s[i];
	vector<vector<pair<int, int> > > ans;
    vector<pair<int, int> > tmp;
    
    for(int l = 7; l > 0; l--){
        for(int m = 9; m > 0; m--){
            for(int i = 0; i < h; i++){
                for(int j = 0; j < w; j++){
                    if((s[i][j] - '0') == m && f[i][j] == false){
                        tmp = make_piece(i, j, l);
                        if(tmp.size() == k){
                            ans.push_back(tmp);
                        }
                    }
                }
            }
        }
    }

	int c = ans.size();
	cout << c << endl;
	for(int i = 0; i < c; i++){
		for(int j = 0; j < k; j++){
			cout << ans[i][j].first + 1 << " " << ans[i][j].second + 1 << endl;
		}
	}
}

Submission Info

Submission Time
Task A - Multiple Pieces
User treeone
Language C++14 (GCC 5.4.1)
Score 836549
Code Size 1960 Byte
Status AC
Exec Time 9 ms
Memory 256 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 83500 / 1343058 81825 / 1343058 85757 / 1343058 79435 / 1343058 88236 / 1343058 83254 / 1343058 82592 / 1343058 77306 / 1343058 88362 / 1343058 86282 / 1343058
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 9 ms 256 KB
subtask_01_02.txt AC 9 ms 256 KB
subtask_01_03.txt AC 9 ms 256 KB
subtask_01_04.txt AC 9 ms 256 KB
subtask_01_05.txt AC 9 ms 256 KB
subtask_01_06.txt AC 9 ms 256 KB
subtask_01_07.txt AC 9 ms 256 KB
subtask_01_08.txt AC 9 ms 256 KB
subtask_01_09.txt AC 9 ms 256 KB
subtask_01_10.txt AC 9 ms 256 KB