Link Sub: http://www.spoj.com/PTIT/problems/P144PROE/
Người Gửi: Sai
- Problem:
Tí và Tèo rủ nhau chơi trò chơi tung đồng xu. Tâm được 2 người tin tưởng giao làm trọng tài. Trò chơi rất đơn giản. Đầu tiên Tí tung đồng xu x lần, Tèo tung đồng xu y lần. Nếu người chơi tung được mặt ngửa thì sẽ được 1 điểm, còn mặt sấp thì không có điểm nào cả. Người chiến thắng là người có điểm cao nhất sau khi kết thúc trò chơi. Nếu điểm số Tí và Tèo bằng nhau, sẽ có một kết quả hòa.Tại một số điểm Tâm lại quên mất kết quả của trò chơi. Tâm chỉ nhớ rằng Tí lật được mật ngửa ít nhất a lần, Tèo thì ít nhất b lần và người chiến thắng là Tí.
Tâm muốn sử dụng tất cả các thông tin trên để tìm ra tất cả các kết quả có thể của trò chơi mà không bị mâu thuẫn với thông tin đang có.
Các bạn hãy giúp Tâm nhé!
Input
Một dòng duy nhất chứa các số nguyên x, y, a, b ( 1<= a <= x <=100, 1 <= b <= x <= 100).
Output
Dòng đầu tiên là số kết quả của trò chơi có thể có.
Các dòng tiếp theo ghi ra cặp số p[i], q[i] là kết quả thứ i có thể có của trò chơi.
Các kết quả được in theo thứ tự “ tăng dần”.
Ta định nghĩa như sau: cặp (p1, q1) nhỏ hơn cặp (p2, q2) nếu p1 < p2, hoặc p1 = p2 và q1 < q2.
Example:
Dòng đầu tiên là số kết quả của trò chơi có thể có.
Các dòng tiếp theo ghi ra cặp số p[i], q[i] là kết quả thứ i có thể có của trò chơi.
Các kết quả được in theo thứ tự “ tăng dần”.
Ta định nghĩa như sau: cặp (p1, q1) nhỏ hơn cặp (p2, q2) nếu p1 < p2, hoặc p1 = p2 và q1 < q2.
Input
3 2 1 1
Output:
3
2 1
3 1
3 2
Input
2 4 2 2
Output:
0
- Solution:
Vì Tí thắng nên điểm của Tèo chỉ trong khoảng [b; điểm tí) hoặc [b; y].Input
2 4 2 2
Output:
0
Code C++ dưới đây sử dụng vector (mảng động) để lưu trữ dữ liệu.
- Code:
C++:
https://ideone.com/jpwdDN
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct data
{
int p, q;
data (int x, int y)
{
p = x;
q = y;
}
} typedef data;
int main ()
{
vector <data> v;
int x, y, a, b;
cin>>x>>y>>a>>b;
for (int i=a; i<=x; i++)
{
for (int j=b; j<i && j<=y; j++)
{
v.push_back(data(i, j));
}
}
cout<<v.size()<<endl;
for (int i=0; i<v.size(); i++)
{
cout<<v[i].p<<" "<<v[i].q<<endl;
}
return 0;
}