C - Ideal Holidays

lightsong發表於2024-03-30

C - Ideal Holidays

https://atcoder.jp/contests/abc347/tasks/abc347_c

思路

將所有延遲計劃時間 % a+b 對映到 區間 [0, a+b]

然後對對映陣列排序,

統計最大間距(最大間距可以被安排到 工作日 b),

如果最大間距 大於 b, 則所有延遲計劃可以被安排到 假期

Code

int n, a, b;
vector<int> d;

int main()
{
    cin >> n >> a >> b;

    int modula = a+b;
    for(int i=0; i<n; i++){
        int temp;
        cin >> temp;
        
        temp %= modula;
        
        d.push_back(temp);
    }

    sort(d.begin(), d.end());

    int maxseg = -1;
    for(int i=1; i<d.size(); i++){
        maxseg = max(maxseg, d[i]-d[i-1]-1);
    }

    maxseg = max(maxseg, (a+b - d[d.size()-1] + d[0]-1));

    if (maxseg >= b){
        cout << "Yes" << endl;
    } else {
        cout << "No" << endl;
    }

    return 0;
}

相關文章