#include <bits/stdc++.h> using namespace std; int a, b,c, n; vector <int> polnoc; vector <int> wschod; int main () { cin>>n; for (int i=0; i<n; i++) { cin>>a>>b>>c; if (a==1) polnoc.push_back(b-c); if (a==2) wschod.push_back(b-c); } sort(polnoc.begin(), polnoc.end()); sort (wschod.begin(), wschod.end()); int k=0; int i=0; int wynik=0; while (i<polnoc.size() && k<wschod.size()) { if (polnoc[i] > wschod[k]) k++; else if (polnoc[i]<wschod[k]) i++; else if (polnoc[i]==wschod[k]) { int pierwszy_i=i; int pierwszy_k=k; while (i<polnoc.size()-1 && polnoc[i]==polnoc[pierwszy_i]) i++; if (polnoc[i]!=polnoc[pierwszy_i]) i--; while (k<wschod.size()-1 && wschod[k]==wschod[pierwszy_k]) k++; if (wschod[k]!=wschod[pierwszy_k]) k--; wynik+=min((k-pierwszy_k+1),(i-pierwszy_i+1)); if (i<polnoc.size()) i++; if (k<wschod.size()) k++; } } cout<<wynik; }
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #include <bits/stdc++.h> using namespace std; int a, b,c, n; vector <int> polnoc; vector <int> wschod; int main () { cin>>n; for (int i=0; i<n; i++) { cin>>a>>b>>c; if (a==1) polnoc.push_back(b-c); if (a==2) wschod.push_back(b-c); } sort(polnoc.begin(), polnoc.end()); sort (wschod.begin(), wschod.end()); int k=0; int i=0; int wynik=0; while (i<polnoc.size() && k<wschod.size()) { if (polnoc[i] > wschod[k]) k++; else if (polnoc[i]<wschod[k]) i++; else if (polnoc[i]==wschod[k]) { int pierwszy_i=i; int pierwszy_k=k; while (i<polnoc.size()-1 && polnoc[i]==polnoc[pierwszy_i]) i++; if (polnoc[i]!=polnoc[pierwszy_i]) i--; while (k<wschod.size()-1 && wschod[k]==wschod[pierwszy_k]) k++; if (wschod[k]!=wschod[pierwszy_k]) k--; wynik+=min((k-pierwszy_k+1),(i-pierwszy_i+1)); if (i<polnoc.size()) i++; if (k<wschod.size()) k++; } } cout<<wynik; } |