C++ SPOJ RPLD-什么';我的解决方案有什么问题吗

C++ SPOJ RPLD-什么';我的解决方案有什么问题吗,c++,stl,C++,Stl,下面是我的代码,用于查找一对(id,c)是否已经存在。我使用多重映射来存储(id,c)对值。我不断地得到这个密码的错误答案。我哪里出错了? 问题链接- 我得到了问题中给出的测试用例的正确答案。但是在提交后获得WA #include <iostream> #include <tuple> #include <map> using namespace std; int main() { int t,i=1; cin >> t; while(

下面是我的代码,用于查找一对(id,c)是否已经存在。我使用多重映射来存储(id,c)对值。我不断地得到这个密码的错误答案。我哪里出错了?
问题链接- 我得到了问题中给出的测试用例的正确答案。但是在提交后获得WA

#include <iostream>
#include <tuple>
#include <map>
using namespace std;
int main()
{
  int t,i=1;
  cin >> t;
  while(t--){
      int n , r, f;
      cin >> n >> r;
      multimap <long int ,long int> s;
      pair <long int,long int> p;
      f= 0;
      while(r > 0){
          long int id,c,idx =0;          
          cin >> id >> c;
          if(f == 0){
          p = make_pair(id,c);
          for(multimap<long int,long int>::iterator it = s.find(id); it != s.end(); it++){
              ++idx;
              if(it->second == c)
                  f=1;               
          }
          if(idx == 0)
                s.insert(p);
          idx = 0;          
          }
          --r;
      }      
      if(f==0)
        cout << "Scenario #"<<i<<": possible"<<endl;
      else
        cout << "Scenario #"<<i<<": impossible"<<endl;
     ++i;     
      s.clear();
  }
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
int t,i=1;
cin>>t;
而(t--){
int n,r,f;
cin>>n>>r;
多重映射;
对p;
f=0;
而(r>0){
长整数id,c,idx=0;
cin>>id>>c;
如果(f==0){
p=配对(id,c);
for(multimap::iterator it=s.find(id);it!=s.end();it++){
++idx;
如果(它->秒==c)
f=1;
}
如果(idx==0)
s、 插入(p);
idx=0;
}
--r;
}      
如果(f==0)

cout您的输入和预期输出是什么?请检查此问题链接以了解预期输入和输出如果一个键在
multimap
中出现多次,则无法保证返回哪个元素
find
。我建议使用
std::map
而不是
multimap
。我尝试了multimap.equal\u range()获取一个键的所有值。仍然提供WA。感谢您在@molbdnilo上的评论。我尝试了map,但效果很好。不确定为什么multimap.equal_range()但不起作用。您的输入和预期输出是什么?请检查此问题链接以了解预期的输入和输出如果键在
多重映射中出现多次,则无法保证查找
返回哪个元素。我建议使用
std::map
而不是
多重映射
。我尝试了多重映射_range()获取一个键的所有值。仍然提供WA。感谢您在@molbdnilo上的评论。我尝试了map,它可以工作。不确定为什么multimap.equal_range()不能工作。