結果
問題 | No.674 n連勤 |
ユーザー |
|
提出日時 | 2018-04-18 00:32:20 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,124 bytes |
コンパイル時間 | 736 ms |
コンパイル使用メモリ | 65,440 KB |
最終ジャッジ日時 | 2025-01-05 10:18:56 |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 15 TLE * 2 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:45:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 45 | scanf("%lld%lld",&a,&b); | ~~~~~^~~~~~~~~~~~~~~~~~
ソースコード
#include <vector> #include <set> #include <algorithm> #include <cstdio> using namespace std; typedef pair<long long,long long> pll; long long checkio(const vector<pll> &v){ long long result=0; long long l,r; set<pll> se; for(auto &e:v){ l=e.first,r=e.second; auto right=se.lower_bound(make_pair(l,0LL)); //p.first <= right.first if(right!=se.begin()){ --right; auto left=right; ++right; if(l<=left->second+1){ // overlap with left l=left->first; r=max(r,left->second); result-=left->second-left->first+1; se.erase(left); } } while(right!=se.end() && right->first-1<=r){ // overlap with right r=max(r,right->second); result-=right->second-right->first+1; se.erase(right++); } result+=r-l+1; se.insert(make_pair(l,r)); auto &x=*max_element(se.begin(),se.end(),[](const pll& a,const pll &b){ return a.second-a.first+1 < b.second-b.first+1; }); printf("%lld\n",x.second-x.first+1); } return result; } int main(){ vector<pll>data; long long a,b; scanf("%lld%lld",&a,&b); for(;~scanf("%lld%lld",&a,&b);){ data.emplace_back(a,b); } checkio(data); }