题意:算ACM出线名额,3种情况得名额:1、学校有队伍解题大于等于m。2、世界总决赛前20名学校。3、举办过比赛的学校。
题解:后两个条件题目直接给,然后注意第一个条件只能算一次就OK了。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }