题意:算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 }