#include <stdio.h>
#include <vector>
using namespace std;
struct car {
unsigned int position = 1, time = 0, index = 0;
};
car* createCar(unsigned int position, unsigned int time) {
car* temp = new car;
temp->position = position;
temp->time = time;
temp->index = time - position + 1000000;
return temp;
}
unsigned int rows[2000002];
unsigned int cols[2000002];
vector<unsigned int> rowsv;
int main(int argc, char const *argv[]) {
unsigned int i, j,carsNum, type, position, time, result = 0;
if (!scanf("%d\n", &carsNum)) return 1;
for (i = 0; i < 2000002; ++i) {
rows[i] = cols[i] = 0;
}
for (i = 0; i < carsNum; ++i) {
if (!scanf("%d %d %d", &type, &position, &time)) return 1;
car* temp = createCar(position, time);
// printf("%d %d %d %d %d\n", i, type, position, time, temp->index);
if (type == 1) {
++cols[temp->index];
} else if (type == 2) {
++rows[temp->index];
if (rows[temp->index] == 1) {
rowsv.push_back(temp->index);
}
}
}
for (i = 0; i < rowsv.size(); ++i) {
unsigned int index = rowsv[i];
if (rows[index] > 0 && cols[index] > 0) {
result += rows[index] > cols[index] ? cols[index] : rows[index];
}
}
printf("%d", result);
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include <stdio.h> #include <vector> using namespace std; struct car { unsigned int position = 1, time = 0, index = 0; }; car* createCar(unsigned int position, unsigned int time) { car* temp = new car; temp->position = position; temp->time = time; temp->index = time - position + 1000000; return temp; } unsigned int rows[2000002]; unsigned int cols[2000002]; vector<unsigned int> rowsv; int main(int argc, char const *argv[]) { unsigned int i, j,carsNum, type, position, time, result = 0; if (!scanf("%d\n", &carsNum)) return 1; for (i = 0; i < 2000002; ++i) { rows[i] = cols[i] = 0; } for (i = 0; i < carsNum; ++i) { if (!scanf("%d %d %d", &type, &position, &time)) return 1; car* temp = createCar(position, time); // printf("%d %d %d %d %d\n", i, type, position, time, temp->index); if (type == 1) { ++cols[temp->index]; } else if (type == 2) { ++rows[temp->index]; if (rows[temp->index] == 1) { rowsv.push_back(temp->index); } } } for (i = 0; i < rowsv.size(); ++i) { unsigned int index = rowsv[i]; if (rows[index] > 0 && cols[index] > 0) { result += rows[index] > cols[index] ? cols[index] : rows[index]; } } printf("%d", result); return 0; } |
English