题意:总共有N个人进入教室, 每次进入的时候会和教室里面原有的人握手,并且记录握手的次数,当教室里面有大于等于三个人的时候,任意三个人可以组队去比赛(后面近来的人将无法看到他们), 现在给出人数N 给出乱序的人的握手次数,问是否可以组成一个合法的序列
题解:
一个人一个人往教室里走, 每次看看当前握手次数的询问是否还有, 如果还有 直接用当前握手次数否则将退回当前次数减3的次数继续查询,当查询合法后将序号放入数组存下。当查询到某个次数减到负数之后退出,查询数组长度是否大于N
代码:
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<vector>
using namespace std;
vector<int> value;
struct Node
{
int coun;
vector<int> mark;
}cun[200005];
int main()
{
int n, a;
while(scanf(&