#include <cstdio> #include <iostream> #include <queue> #include <vector> #include <map> using namespace std; int main() { int n; int t, x, y; map<int, int> m1, m2; scanf("%d",&n); for (int i=0; i<n; i++) { scanf("%d%d%d",&t,&x,&y); if (t == 1) if (m1.find(x-y) == m1.end()) m1[x-y] = 1; else m1[x-y]++; else if (m2.find(x-y) == m2.end()) m2[x-y] = 1; else m2[x-y]++; } map<int, int>::iterator it; int result = 0; for ( it = m1.begin(); it != m1.end(); it++ ) { if (m2.find(it->first) != m2.end()) { result += min(it->second, m2[it->first]); } } printf("%d\n",result); }
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 | #include <cstdio> #include <iostream> #include <queue> #include <vector> #include <map> using namespace std; int main() { int n; int t, x, y; map<int, int> m1, m2; scanf("%d",&n); for (int i=0; i<n; i++) { scanf("%d%d%d",&t,&x,&y); if (t == 1) if (m1.find(x-y) == m1.end()) m1[x-y] = 1; else m1[x-y]++; else if (m2.find(x-y) == m2.end()) m2[x-y] = 1; else m2[x-y]++; } map<int, int>::iterator it; int result = 0; for ( it = m1.begin(); it != m1.end(); it++ ) { if (m2.find(it->first) != m2.end()) { result += min(it->second, m2[it->first]); } } printf("%d\n",result); } |