[TIOJ] 1410. Comiket

我的想法很直觀,就是用array儲存入和出的人(記得出的時間點也算,所以要加1),然後掃過去紀錄時間軸的max值。

PS:我最後發現我這樣寫不管是時間上還是空間上都很爛,所以我去看了幾位大神的寫法才發現這題可以用離散化或是用map揍掉 m(_ _)m


#pragma gcc optimize(o2)
#include<bits/stdc++.h>
#define int long long int 
#define IOS ios_base::sync_with_stdio(false)
#define TO cin.tie(NULL)
using namespace std;
int str[100005];
signed main()
{
    IOS;TO;
    int range=0,a,b,n,maxu,ans;
    while(cin >> n)
    {
        ans=0;maxu=0;
        while(n--)
        {
            cin >> a >> b;
            str[a]++;
            b+=1;
            str[b]--;
            range=max(range,b);
        }
        for(int i=0;i<=range;i++)
        {
            maxu+=str[i];
            ans=max(maxu,ans);
        }
        cout << ans <<endl;
    }
    return 0;
}

留言

這個網誌中的熱門文章

[ZJ] b229: TOI 2009 第一題:路徑問題

交大資工(APCS組)(面試&心得)

滿是挫傷的ION CAMP