kiem tien, kiem tien online, kiem tien truc tuyen, kiem tien tren mang
Friday, November 11, 2011

Nguon: Suu tam



Trong cuộc thi ACM, các đội thi đấu với nhau. Thứ hạng của mỗi đội phụ thuộc vào: số lượng bài giải được và số điểm bị phạt (điểm phạt phụ thuộc vào thời gian và số lần nộp bài trước khi bài đó được giải đúng). Điểm phạt bằng thời gian nộp bài đúng cộng với 20 phút cho mỗi lần nộp sai. Nếu một bài không giải được thì những lần nộp sai bài đó không bị tính điểm phạt. Như vậy nếu đội giải đúng vào lần nộp thứ 2, sau 20 phút thì điểm phạt sẽ là 40 điểm. Đội thắng là đội giải được nhiều nhất, nếu có nhiều đội có số bài giải giống nhau thì đội bị phạt ít hơn sẽ giành chiến thắng.
Input: Cuộc thi ACM lần này chỉ có 4 bài.
Dòng 1: số n tương ứng với số đội thi
Dòng 2 đến dòng n+1: Mỗi dòng ghi
<Tên> <p1SuB> <p1Time> <p2SuB> <p2Time>….<p4Time>
Thành phần đầu tiên là tên đội, không chứa dấu cách. Sau đó là thông tin về đội đó: p1Sub số lần đội nộp lời giải cho bài 1, p1Time là thời điểm đội nộp đúng, nếu đội không giải đúng được bài 1 thì p1Time=0, tương tự với 3 bài còn lại.
Output: Ghi tên đội thắng, số bài giải được, số điểm phạt
Ví dụ cho Input và Output:
INPUT
OUTPUT

4
Stars 2 20 5 0 4 190 3 220
Rockets 5 180 1 0 2 0 3 100
Penguins 1 15 3 120 1 300 4 0
Marsupials 9 0 3 100 2 220 3 80
Penguins 3 475





#include<iostream>
#include<string.h>
//#include<fstream>
using namespace std;




struct danh_sach
{
string ten;
int sub[6];
int time[6];
int phat;
int sum ;
} a[100];

int main()
{
int n,max,min,win ;
//ifstream f;
//f.open("thidau.txt");
//f>>n;
cin>>n;
//a = new danh_sach[n];
for(int i=1;i<=n;i++)
{
//f>>a[i].ten;
cin>>a[i].ten;
a[i].phat =0;
a[i].sum =0;
for( int j=1;j<=4;j++)
{
//f>>a[i].sub[j];
//f>>a[i].time[j];
// cout<< a[i].time[j]<<endl;
cin>>a[i].sub[j];
cin>>a[i].time[j];
if(a[i].time[j]!=0)
{
//cout<<"truoc khi tinh "<<a[i].phat<<endl;
a[i].phat += (a[i].time[j] + 20*(a[i].sub[j] -1));
//cout<< "sau khi tinh "<<a[i].phat<<endl;
a[i].sum++;
}

}
//cout<<"ket qua cuoi: "<<a[i].phat<<endl;
}

max = a[1].sum;
min = a[1].phat;
win = 1;
for( int i=2;i<=n;i++)
{
if( a[i].sum >max|| (a[i].sum == max && a[i].phat<min))
{
max = a[i].sum;
min = a[i].phat;
win =i;
}
}

cout<< a[win].ten <<" "<<a[win].sum<<" "<<a[win].phat;
//delete(a);
//system("pause");
return 0;
}
















0 comments:

Post a Comment

domain, domain name, premium domain name for sales

Popular Posts