Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdbool.h>
- #include<stdio.h>
- #include<stdlib.h>
- int n, x[10] = {}, y[10] = {}, capacity[10] = {};
- bool compare(int i, int j, int posx, int posy) {
- if (i == -1) return false;
- if (j == -1) return true;
- int di = abs(x[i] - posx) + abs(y[i] - posy),
- dj = abs(x[j] - posx) + abs(y[j] - posy);
- if (di != dj) return di < dj;
- if (x[i] != x[j]) return x[i] < x[j];
- return y[i] < y[j];
- }
- int main(){
- scanf("%d", &n);
- for(int i = 0; i < n; i++){
- scanf("%d%d%d", &x[i], &y[i], &capacity[i]);
- }
- int m, x_bicycle, y_bicycle, distance[10] = {}, bicycle[10] = {};
- scanf("%d", &m);
- for(int i = 0; i < m; i++){
- scanf("%d%d", &x_bicycle, &y_bicycle);
- int min_parkinglot = -1;
- for (int j = 0;j < n;++j) {
- if (capacity[j] == 0) continue;
- if (compare(j, min_parkinglot, x_bicycle, y_bicycle))
- min_parkinglot = j;
- }
- // int min_distance = 20000;
- // int min_x = 10000, min_y = 10000, min_parkinglot = -1;
- // for(int j = 0; j < n; j++){
- // if(capacity[j] == 0){
- // continue;
- // }
- // distance[j] = abs(x_bicycle-x[j]) + abs(y_bicycle-y[j]);
- // if(distance[j] == min_distance){
- // if(x[j] == min_x){
- // if(y[j] < min_y){
- // min_distance = distance[j];
- // min_x = x[j];
- // min_y = y[j];
- // min_parkinglot = j;
- // }
- // }
- // else if(x[j] < min_x){
- // min_distance = distance[j];
- // min_x = x[j];
- // min_y = y[j];
- // min_parkinglot = j;
- // }
- // }
- // else if(distance[j] < min_distance){
- // min_distance = distance[j];
- // min_x = x[j];
- // min_y = y[j];
- // min_parkinglot = j;
- // }
- // }
- capacity[min_parkinglot]--;
- bicycle[min_parkinglot]++;
- }
- for(int i =0; i < n; i++){
- printf("%d\n", bicycle[i]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment