結果
| 問題 |
No.580 旅館の予約計画
|
| ユーザー |
horiesiniti
|
| 提出日時 | 2017-10-09 13:04:25 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 3 ms / 2,000 ms |
| コード長 | 1,245 bytes |
| コンパイル時間 | 626 ms |
| コンパイル使用メモリ | 76,232 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-11-21 13:36:03 |
| 合計ジャッジ時間 | 1,586 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 36 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:20:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
20 | scanf("%d %d",&n,&m);
| ~~~~~^~~~~~~~~~~~~~~
main.cpp:23:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
23 | scanf("%d %d:%d %d %d:%d",&d1,&h1,&m1,&d2,&h2,&m2);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include<stdio.h>
#include<queue>
#include<map>
#include<iostream>
struct E{
int i,o;
bool operator<(const E& e1)const{
if(i!=e1.i)return i>e1.i;
return o>e1.o;
}
};
int main(){
std::priority_queue<E> pq;
std::map<int,int> ms;
int n,m;
scanf("%d %d",&n,&m);
for(int i=0;i<m;i++){
int d1,d2,h1,h2,m1,m2;
scanf("%d %d:%d %d %d:%d",&d1,&h1,&m1,&d2,&h2,&m2);
E e1;
e1.i=d1*10000+h1*100+m1;
e1.o=d2*10000+h2*100+m2;
pq.push(e1);
if(e1.i>e1.o){
printf("err\n");
}
if(d1<2||8<d1||d2<2||8<d2){
printf("err2\n");
}
if(h1<0||23<h1||h2<0||23<h2){
printf("err3\n");
}
if(m1<0||59<m1||m2<0||59<m2){
printf("err4");
}
//std::cout<<d1<<" "<<h1<<" "<<m1<<" "<<d2<<" "<<h2<<" "<<m2<<"\n";
}
int count=0,ans=0;
while(pq.empty()==false){
E e1=pq.top();
pq.pop();
std::map<int,int>::iterator it=ms.begin();
while((it!=ms.end())&&((*it).first<e1.i)){
int add=(*it).second;
count-=add;
ans+=add;
ms.erase(it);
it=ms.begin();
}
if(count>=n){
ms[e1.o]++;
count++;
if(count>n){
it=ms.end();
it--;
(*it).second--;
if((*it).second<1){
ms.erase(it);
}
count--;
}
}else{
count++;
ms[e1.o]++;
}
}
ans+=count;
printf("%d\n",ans);
}
horiesiniti