29 lines
1.1 KiB
C++
29 lines
1.1 KiB
C++
#include <bits/stdc++.h>
|
||
|
||
using namespace std;
|
||
|
||
int main() {
|
||
int n, a, day = 0, unday = 0, point = 0, sum = 0;//point是当前每天要加的活跃值,sum是活跃值总和
|
||
cin >> n;
|
||
for (int i = 1; i <= n; i++) {
|
||
cin >> a;
|
||
if (a == 1)//如果当天打了卡
|
||
{
|
||
if (unday > 0) {//如果在这天之前有连续没打卡天数
|
||
day -= pow(2, unday - 1);//如上
|
||
if (day < 0) day = 0;//处理负数情况
|
||
}
|
||
unday = 0;//连续没打卡天数清零
|
||
day++;//连续打卡天数累加
|
||
if (day >= 1 && day < 3) point = 1;//如上的活跃值奖励判断
|
||
if (day >= 3 && day < 7) point = 2;
|
||
if (day >= 7 && day < 30) point = 3;
|
||
if (day >= 30 && day < 120) point = 4;
|
||
if (day >= 120 && day < 365) point = 5;
|
||
if (day >= 365) point = 6;
|
||
sum += point;//累计活跃值总和
|
||
} else unday++;//如果当天没打卡,连续没打卡天数累加
|
||
}
|
||
cout << sum;//输出总和
|
||
return 0;//结束程序
|
||
} |