AT2579 [ARC075A] Bugged 题解

题意简述

nn 道题,答对一道获得 AiA_i
分,答错不得分。但是如果现在分数为 10 的倍数将会显示 0 分,问最高可以获得多少分?

只不过要吐槽一下样例数据:输入 #3 明明没有输出,但数据里却要求输出 00

解题思路

分类讨论思想。

  1. 所有得分都是 1010 的倍数,直接输出 00

  2. 所有得分之和不是 1010 的倍数,输出得分之和。

  3. 和是 1010 的倍数,但有部分得分不是 1010 的倍数,那么减去这些不是 1010 的倍数里面的最小值即为答案。

代码实现

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
int n,tmp,sum,minn=inf; bool pd;
void doit() { pd=true; minn=min(minn,tmp);}
int main() {
	scanf("%d",&n);
	for(int i=1;i<=n;i++) {
		scanf("%d",&tmp); sum+=tmp;
		if(tmp%10!=0) doit();
	}
	if(!pd) printf("0");
	else if(sum%10!=0) printf("%d",sum);
	else printf("%d",sum-minn);
	return 0;
}
//code by TheCedar