POJ 3138

题意:算ACM出线名额,3种情况得名额:1、学校有队伍解题大于等于m。2、世界总决赛前20名学校。3、举办过比赛的学校。

题解:后两个条件题目直接给,然后注意第一个条件只能算一次就OK了。

View Code
 1 #include<cstdio>

 2 #include<cstring>

 3 #include<algorithm>

 4 using namespace std;

 5 int tot[105];

 6 bool mark[105];

 7 int main()

 8 {

 9     int n,m,num,ca=0;

10     while(scanf("%d%d%d",&n,&m,&num))

11     {

12         if(n==0&&m==0&&num==0)

13             break;

14         for(int i=0;i<n;i++)

15         {

16             int a,b,c;

17             scanf("%d%d%d",&a,&b,&c);

18             tot[a]=b+c;

19         }

20         memset(mark,false,sizeof(mark));

21         for(int i=0;i<m;i++)

22         {

23             int a,b;

24             scanf("%d%d",&a,&b);

25             if(mark[a]||b<num)

26                 continue;

27             mark[a]=true;

28             tot[a]++;

29         }

30         int ans=0;

31         for(int i=1;i<=n;i++)

32             ans+=tot[i];

33         printf("Case %d: %d\n",++ca,ans);

34     }

35     return 0;

36 }

你可能感兴趣的:(poj)