美团2021笔试通用卷08
美团2021笔试通用卷08
01 - 小美的暑假
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <unordered_map>
using namespace std;
int n, m, T;
vector<int> shelf;
vector<bool> isonshelf, locker, ismei;
void add(int a, int b)
{
if(!ismei[a] ||locker[shelf[a]] || locker[b])
return;
isonshelf[a] = true;
ismei[a] = true;
shelf[a] = b;
}
void lockered(int a)
{
locker[a] = true;
}
void unlockered(int a)
{
locker[a] = false;
}
int borrow(int a)
{
if(!isonshelf[a] || locker[shelf[a]]) return -1;
isonshelf[a] = false;
ismei[a] = false;
int ans = shelf[a];
shelf[a] = 0;
return ans;
}
void getback(int a)
{
ismei[a] = true;
}
int main()
{
scanf("%d%d%d", &n, &m, &T);
shelf = vector<int>(2 * n + m + 10, 0);
isonshelf = vector<bool>(2 * n + m + 10, false);
ismei = vector<bool>(2 * n + m + 10, true);
locker = vector<bool>(2 * n + m + 10, false);
while(T--)
{
int op, a, b;
scanf("%d%d", &op, &a);
if(op == 1)
{
scanf("%d", &b);
add(a, b);
} else if (op == 2)
{
lockered(a);
} else if (op == 3)
{
unlockered(a);
} else if(op == 4)
{
cout << borrow(a) << endl;
}
else if (op == 5){
getback(a);
}
}
return 0;
}02 - 偏爱字母
03 - 搭配出售
04 - 十字路口
Last updated