#include <iostream> #include <cmath> #include <algorithm> using namespace std; long long a1[500012]; long long a2[500012]; int nA1; int nA2; int main(){ int n,ri; long long wi=0,ti=0,xi=0,yi=0,l1=0,l2=0; cin >>n; for(int i=0;i<n;i++) { cin >> ri; cin >> wi; cin >> ti; if(ri==1){ xi=wi; yi=-ti; a1[l1] = xi+yi; l1++; } if(ri==2){ xi=-ti; yi=wi; a2[l2] = xi+yi; l2++; } } sort(a1, a1+l1); sort(a2, a2+l2); // cout << "a1"<<endl; // for (int i=0;i<l1;i++) { // cout << a1[i] <<endl; // } // cout << "a2"<<endl; // for (int i=0;i<l2;i++) { // cout << a2[i] <<endl; // } int j=0,i=0,wynik=0; //cout <<endl; while(true) { if(i >= l1) break; if(j>=l2) break; //cout << "i= "<<i <<" a1i=" <<a1[i] << " j= "<<j<<" a2j=" <<a2[j]<<endl; if (a1[i] < a2[j]) { i++; if(i>=l1) break; } else if(a1[i]> a2[j]) { j++; if(j>=l2) break; } else if(a1[i]==a2[j]){ i++; j++; wynik++; if(i >= l1) break; if(j>=l2) break; } } cout << wynik <<endl; 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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | #include <iostream> #include <cmath> #include <algorithm> using namespace std; long long a1[500012]; long long a2[500012]; int nA1; int nA2; int main(){ int n,ri; long long wi=0,ti=0,xi=0,yi=0,l1=0,l2=0; cin >>n; for(int i=0;i<n;i++) { cin >> ri; cin >> wi; cin >> ti; if(ri==1){ xi=wi; yi=-ti; a1[l1] = xi+yi; l1++; } if(ri==2){ xi=-ti; yi=wi; a2[l2] = xi+yi; l2++; } } sort(a1, a1+l1); sort(a2, a2+l2); // cout << "a1"<<endl; // for (int i=0;i<l1;i++) { // cout << a1[i] <<endl; // } // cout << "a2"<<endl; // for (int i=0;i<l2;i++) { // cout << a2[i] <<endl; // } int j=0,i=0,wynik=0; //cout <<endl; while(true) { if(i >= l1) break; if(j>=l2) break; //cout << "i= "<<i <<" a1i=" <<a1[i] << " j= "<<j<<" a2j=" <<a2[j]<<endl; if (a1[i] < a2[j]) { i++; if(i>=l1) break; } else if(a1[i]> a2[j]) { j++; if(j>=l2) break; } else if(a1[i]==a2[j]){ i++; j++; wynik++; if(i >= l1) break; if(j>=l2) break; } } cout << wynik <<endl; return 0; } |