Submission

Status:
PPPPPPPPPP

Score: 100

User: SnowAveNode

Problemset: ไฟส่อง

Language: cpp

Time: 0.002 second

Submitted On: 2025-04-01 07:42:57

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
    int N; cin >> N;
    vector<pair<int,int>> intervals;
    for(int i = 0; i < N; i++){
        int A, B; cin >> A >> B;
        if(A < B){
            intervals.push_back({A, B});
        } else {
            intervals.push_back({A, 360});
            intervals.push_back({0, B});
        }
    }
    sort(intervals.begin(), intervals.end());

    vector<pair<int,int>> merged;
    for(auto interval : intervals){
        if(merged.empty() || interval.first > merged.back().second)
            merged.push_back(interval);
        else
            merged.back().second = max(merged.back().second, interval.second);
    }
    if(merged.size() == 1 && merged[0].second - merged[0].first == 360){
        cout << 360 << endl;
        return 0;
    }

    int maxLen = 0;
    for(auto interval : merged){
        maxLen = max(maxLen, interval.second - interval.first);
    }
    if(merged.front().first == 0 && merged.back().second == 360){
        int candidate = merged.front().second + (360 - merged.back().first);
        maxLen = max(maxLen, candidate);
    }
    cout << maxLen << endl;
}