A Heads or Tails
题意:
给出x , y , a ,b , 求{p , q} , a <= p <= x ,b <= q <= y , p > q.
解法:
无
Code:
int x , y , a , b;
vector<PII> ans;
void solve(){
ans.clear();
for(int i = a ; i <=x ; ++i)
for (int j = b ; j <= y ; ++j)
if (i > j){
ans.PB( MP(i , j));
}
printf("%d\n" , ans.size());
for (int i = 0 ; i < ans.size() ; ++i)
printf("%d %d\n" , ans[i].first , ans[i].second);
}
int main(){
while(cin >> x >>y >> a >> b){
solve();
}
}
B Big Segment
题意:
给出n 对数字[l , r], 问是否有其中一组可以覆盖所有线段
解法:
取lmin , rmax, 然后查找
Code:
int a , b , n;
vector< PII > seg;
void solve(){
seg.clear();
int c , d;
for (int i = 0 ; i < n ; ++i){
cin >> a >> b;
if (i == 0) c = a , d = b;
else checkMax(d , b) , checkMin(c , a);
seg.PB( MP(a , b) );
}
for (int i = 0 ; i < n ; ++i){
if (seg[i].first == c && seg[i].second == d){
printf("%d\n" , i + 1);
return ;
}
}
cout << "-1" << endl;
}
int main(){
while (cin >> n) solve();
}