#include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; vector<pair<int,int> > q; int maxm=0; for(int i=0; i<n; i++) { int a,b; cin>>a>>b; q.push_back(make_pair(a,b)); } vector<vector<int> > v(n); map<int,int> w; for(int i=0; i<n; i++) { int r=q[i].second; int g=i-1; while(g>=0 && r>0) { if(q[i].first-r<=q[g].first) { v[i].push_back(q[g].first); w[q[g].first]++; } else r=0; g--; } v[i].push_back(q[i].first); w[q[i].first]++; g=i+1; r=q[i].second; while(g<q.size() && r>0) { if(r+q[i].first>=q[g].first) { v[i].push_back(q[g].first); w[q[g].first]++; } else r=0; g++; } } vector<int> W; for(int i=0; i<w.size(); i++) { if(w[i]>0) W.push_back(w[i]); } sort(W.begin(), W.end()); int wynik=1; int it=0; for(int i=W.size()-1; i>=0; i--) { wynik=(wynik*(n-it-(W[i]-1)))%1000000007; it++; } cout<<(wynik-1)%1000000007; }
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 | #include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; vector<pair<int,int> > q; int maxm=0; for(int i=0; i<n; i++) { int a,b; cin>>a>>b; q.push_back(make_pair(a,b)); } vector<vector<int> > v(n); map<int,int> w; for(int i=0; i<n; i++) { int r=q[i].second; int g=i-1; while(g>=0 && r>0) { if(q[i].first-r<=q[g].first) { v[i].push_back(q[g].first); w[q[g].first]++; } else r=0; g--; } v[i].push_back(q[i].first); w[q[i].first]++; g=i+1; r=q[i].second; while(g<q.size() && r>0) { if(r+q[i].first>=q[g].first) { v[i].push_back(q[g].first); w[q[g].first]++; } else r=0; g++; } } vector<int> W; for(int i=0; i<w.size(); i++) { if(w[i]>0) W.push_back(w[i]); } sort(W.begin(), W.end()); int wynik=1; int it=0; for(int i=W.size()-1; i>=0; i--) { wynik=(wynik*(n-it-(W[i]-1)))%1000000007; it++; } cout<<(wynik-1)%1000000007; } |