Submission details
Task:Kayaks
Sender:🍦🍧🍨
Submission time:2015-09-09 18:13:53 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.05 sdetails
#2ACCEPTED0.06 sdetails
#3ACCEPTED0.06 sdetails
#4ACCEPTED0.05 sdetails
#5ACCEPTED0.05 sdetails
#6ACCEPTED0.06 sdetails
#7ACCEPTED0.06 sdetails
#8ACCEPTED0.06 sdetails
#9ACCEPTED0.05 sdetails
#10ACCEPTED0.05 sdetails
#11ACCEPTED0.05 sdetails
#12ACCEPTED0.05 sdetails

Code

#include <cstdio>
#include <cstring>

int findint(char* s){
	while(*s != 0x00 || *s == 'F'){
		if(*s <= '9' && *s > '0')
			return *s-'0';
		s++;
	}
	return -1;
}
int get_dist(char* s){
	int i=0;
	while(*s != 'F'){
		if(*s <= '9' && *s > '0')
			return i;
		s++;
		i++;
	}
	return -1;
}

int get_max(int dists[]){
	int i;
	int max = -1;
	for(i=1; i<=9; i++){
		if(dists[i] > max) max = dists[i];
	}
	return max;
}

#define extra 10
int main(){
	int w,h;
	int roska = scanf("%d %d", &h, &w);
	char* parks;
	char raw[h][w+20];
	int i;
	int boat;
	int boats = 9;
	char tmp[w+10];
	memset(tmp, 0, w+10);
	for (i=0; i<h; i++){
		roska = scanf("%s", tmp);
		boat = findint(tmp);
		if (boat == -1) continue;
		parks = strcpy( raw[boat], tmp);
	}
	//printf("%d", boats);
	roska++;
	parks++;
	//for (i=1; i<=boats; i++) printf("%s\n", raw[i]);	
	//boats are in numeric order------------------------------------

	int dists[boats+extra];
	memset(dists, 0, boats);
	for (i=1; i<=boats; i++){
		dists[i] = get_dist(raw[i]);
		//printf("%d\n", dists[i]);
	}
	//we have distances from the start for each boat -------------------------
	
	int row;
	int rank = 1;
	int max;
	int rankings[boats+10];
	memset(rankings, -1, boats);
	for(row=1; row<=boats; row++){
		max = get_max(dists);
		if (max == -1) break;
		for (boat=1; boat<=boats; boat++){
			if (dists[boat] == max){
				rankings[boat] = rank;
				dists[boat] = -1;
			}
		}
		rank++;
	}
	for (i=1; i<=boats; i++) printf("%d\n", rankings[i]);	
	return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
10 15
S..........222F
S.....111.....F
S...333.......F
S...555.......F
...

correct output
5
1
6
3
6
...

user output
5
1
6
3
6
...

Test 2

Verdict: ACCEPTED

input
10 10
S.....111F
S....222.F
S...333..F
S..444...F
...

correct output
1
2
3
4
5
...

user output
1
2
3
4
5
...

Test 3

Verdict: ACCEPTED

input
10 10
S...111..F
S....222.F
S.....333F
S444.....F
...

correct output
3
2
1
6
5
...

user output
3
2
1
6
5
...

Test 4

Verdict: ACCEPTED

input
10 20
S..................F
S...111............F
S......222.........F
S.........333......F
...

correct output
9
7
5
3
1
...

user output
9
7
5
3
1
...

Test 5

Verdict: ACCEPTED

input
20 20
S999...............F
S..................F
S..................F
S..................F
...

correct output
5
3
7
6
4
...

user output
5
3
7
6
4
...

Test 6

Verdict: ACCEPTED

input
30 30
S............................F...

correct output
1
6
5
4
3
...

user output
1
6
5
4
3
...

Test 7

Verdict: ACCEPTED

input
30 30
S111.........................F...

correct output
1
1
1
1
1
...

user output
1
1
1
1
1
...

Test 8

Verdict: ACCEPTED

input
30 30
S111.........................F...

correct output
7
6
5
3
2
...

user output
7
6
5
3
2
...

Test 9

Verdict: ACCEPTED

input
30 30
S............................F...

correct output
1
1
1
1
3
...

user output
1
1
1
1
3
...

Test 10

Verdict: ACCEPTED

input
30 30
S............................F...

correct output
5
3
3
3
1
...

user output
5
3
3
3
1
...

Test 11

Verdict: ACCEPTED

input
30 30
S............................F...

correct output
6
5
3
5
4
...

user output
6
5
3
5
4
...

Test 12

Verdict: ACCEPTED

input
30 30
S............................F...

correct output
5
4
3
1
2
...

user output
5
4
3
1
2
...