結果
| 問題 |
No.714 回転寿司屋のシミュレート
|
| コンテスト | |
| ユーザー |
horiesiniti
|
| 提出日時 | 2018-01-19 08:59:28 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 13 ms / 2,000 ms |
| コード長 | 1,448 bytes |
| コンパイル時間 | 1,137 ms |
| コンパイル使用メモリ | 92,980 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-10-09 05:23:26 |
| 合計ジャッジ時間 | 2,272 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 35 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:13:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
13 | scanf("%d",&n);
| ~~~~~^~~~~~~~~
ソースコード
#include<stdio.h>
#include<set>
#include<string>
#include<iostream>
#include<map>
std::map<std::string,std::map<int,int> > memo;
std::map<std::string,int> kyaku[21];
std::set<int> sets;
int main(){
int n;
scanf("%d",&n);
std::map<int,int> tm;
for(int i=0;i<n;i++){
int t;
std::string str;
std::cin>>t;
if(t==0){
int no,m;
std::string str;
std::cin>>no>>m;
if(sets.find(no)!=sets.end()){
printf("-1");
}
sets.insert(no);
for(int i=0;i<m;i++){
std::cin>>str;
if(memo.find(str)==memo.end()){
memo[str]=tm;
}
memo[str][no]++;
kyaku[no][str]++;
}
}else if(t==1){
std::cin>>str;
if(memo.find(str)!=memo.end()){
if(memo[str].size()>0){
std::map<int,int>::iterator it=memo[str].begin();
int no=(*it).first;
printf("%d\n",no);
(*it).second--;
if((*it).second<=0){
memo[str].erase(no);
}
kyaku[no][str]--;
if(kyaku[no][str]<=0){
kyaku[no].erase(str);
}
}else{
printf("-1\n");
}
}else{
printf("-1\n");
}
}else if(t==2){
int no;
std::cin>>no;
std::map<std::string,int>::iterator it;
if(sets.find(no)==sets.end()){
printf("-1");
}
sets.erase(no);
for(it=kyaku[no].begin();it!=kyaku[no].end();it++){
std::string str=(*it).first;
int c=(*it).second;
memo[str][no]-=c;
if(memo[str][no]<=0){
memo[str].erase(no);
}
}
kyaku[no].clear();
}
}
}
horiesiniti