题解 | 小球投盒

小球投盒

https://www.nowcoder.com/practice/e0e8a6f2ba7747b5a9f8a8dc6fa3e9f1

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
//一共有2种操作,可以简单分为3种情况:
//只执行操作1,一共得执行n次不同编号盒子,才能达成目标
//只执行操作2,至少得执行2次不同编号盒子,才能达到目标
//操作1和操作2混合操作,某个编号盒子至少执行过一次操作1和一次操作2,才能达到目标

int main() {
    ll n,m,x;
    int t;
    cin>>n>>m;
    set<ll> op1,op2;
    for(ll i=1; i<=m; i++)
    {
        cin>>t>>x;
        if(t==1)
        {
            op1.insert(x);
        }
        else {
            op2.insert(x);
        }

        if(op1.size()==n || op2.size()>1 || (op1.count(x)>0 && op2.count(x)>0))
        {
            cout << i;
            return 0;
        }
    }

    cout<<-1;
    return 0;

}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务