CCF 201703-2 学生排队 只有60分,没找到哪里出错了,麻烦各位大佬帮忙看一下。。

原题地址
这是代码:

#include<iostream>
#include<list>
using namespace std;

int del(int n,list<int> l)
{
    int pos=0;
    list<int>::iterator iter;
    for(iter=l.begin();iter!=l.end();iter++)
    {
        pos++;
        if(n==*iter)
        {
            l.remove(n);
            break;
        }
    }
    return pos;
}
int main()
{
    int n,m,i=1;
    cin>>n>>m;

    list<int>l(n);
    list<int>::iterator iter=l.begin();
    for(iter=l.begin();iter!=l.end();iter++)
    {
        *iter=i;
        i++;
    }

    int p[m],q[m],pos;
    for(i=0;i<m;i++)
    {
        iter=l.begin();
        cin>>p[i]>>q[i];

        pos=del(p[i],l);//找到要移动的学生的位置
        l.remove(p[i]); 
        for(int j=1;j<pos+q[i];j++)
        {
            iter++;
        }
        l.insert(iter,p[i]);  
    }

    for(iter=l.begin();iter!=l.end();iter++)
    {
        cout<<*iter<<" ";
    }
    return 0;
} 
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^