結果
問題 | No.674 n連勤 |
ユーザー |
|
提出日時 | 2020-10-21 16:13:36 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 41 ms / 2,000 ms |
コード長 | 816 bytes |
コンパイル時間 | 2,816 ms |
コンパイル使用メモリ | 204,604 KB |
最終ジャッジ日時 | 2025-01-15 12:14:58 |
ジャッジサーバーID (参考情報) |
judge2 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 17 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:14:22: warning: use of assignment suppression and length modifier together in gnu_scanf format [-Wformat=] 14 | int q; scanf("%*lld%d",&q); | ^~~~~~~~~ main.cpp:14:21: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 14 | int q; scanf("%*lld%d",&q); | ~~~~~^~~~~~~~~~~~~~ main.cpp:16:32: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 16 | lint l,r; scanf("%lld%lld",&l,&r); r++; | ~~~~~^~~~~~~~~~~~~~~~~~
ソースコード
#include <bits/stdc++.h> #define rep(i,n) for(int i=0;i<(n);i++) using namespace std; using lint=long long; const long long INF=1LL<<61; int main(){ set<pair<lint,lint>> I; multiset<lint> Sz; int q; scanf("%*lld%d",&q); rep(_,q){ lint l,r; scanf("%lld%lld",&l,&r); r++; while(1){ auto it=I.upper_bound({l,-INF}); if(it!=I.end()){ lint tl,tr; tie(tl,tr)=*it; if(tl<=r){ r=max(r,tr); Sz.erase(Sz.find(tr-tl)); I.erase(it); continue; } } it=I.upper_bound({l,-INF}); if(it!=I.begin()){ --it; lint tl,tr; tie(tl,tr)=*it; if(l<=tr){ l=min(l,tl); r=max(r,tr); Sz.erase(Sz.find(tr-tl)); I.erase(*it); continue; } } break; } Sz.emplace(r-l); I.emplace(l,r); printf("%lld\n",*Sz.rbegin()); } return 0; }