题解 P1664 【每日打卡心情好】

· · 题解

简单的代码

#include <iostream>
using namespace std;
int n; unsigned int i,miss,x,sum,Max,score[]={0,1,3,7,30,120,365};
int main()
{
    cin>>n;
    while (--n>=0) {
        cin >> x;
        if (x) {
            if (miss) Max-=min(Max,1u<<--miss),miss=0;
            ++Max;
            for (i=6;i>=1;--i)
                if (Max>=score[i]) break;
            sum+=i;
        } else ++miss;
    }
    cout << sum;
    return 0;
}