求助前10个测试的的代码
查看原帖
求助前10个测试的的代码
464542
GacHen楼主2022/6/22 22:12

蒟蒻真的不知道哪错了

#include<bits/stdc++.h>
using namespace std;
//#include <ext/rope>
//using namespace __gnu_cxx;
#define int long long
int x,y,n,m,q;
struct op{
    int x,y;
}a[300007];
//rope<int>v;
//deque<int>Q;
map<int,vector<int> >mp;
int tot,qp[1000001];
signed main() {
    cin>>n>>m>>q;
    int cnt = 0;
    for(int i = 1;i <= q;++ i) {
        scanf("%lld%lld",&a[i].x,&a[i].y);
        //if(a[i].x == 1) cnt++;
    }
    /*if(cnt == q) {
        if(n == 1) {
            v.insert(0ll,0ll);
            for(int i = 1;i <= m;++ i) v.insert(i,i);
            for(int g = 1;g <= q;++ g) {
                int k = v.at(a[g].y);
                v.erase(a[g].y,1);
                v.insert(m,k);
                printf("%lld\n",k);
            }
        }
        else {
            for(int i = 2;i <= n;++ i) {
                Q.push_back(m*i);
            }
            v.insert(0ll,0ll);
            for(int i = 1;i <= m;++ i) v.insert(i,i);
            for(int g = 1;g <= q;++ g) {
                int k = v.at(a[g].y);
                v.erase(a[g].y,1);
                v.insert(m,Q.front());
                Q.pop_front();
                Q.push_back(k);
                printf("%lld\n",k);
            }
        }
        return 0;
    }*/
    for(int i = 1;i <= n;++ i) qp[i] = m*i;
    for(int g = 1;g <= q;++ g) {
        if(!mp[a[g].x].size()) {
            mp[a[g].x].push_back(0);
            for(int i = 1;i <= m;++ i) mp[a[g].x].push_back(m*(a[g].x-1)+i);
            mp[a[g].x][m] = qp[a[g].x];  
        }
        int k = mp[a[g].x][a[g].y];
        for(int i = a[g].y+1;i <= m;++ i) mp[a[g].x][i-1] = mp[a[g].x][i];
        for(int i = a[g].x+1;i <= n;++ i) qp[i-1] = qp[i]; 
        qp[n] = k;
        mp[a[g].x][m] = qp[a[g].x];
        printf("%lld\n",k);
    }
    return 0;
}
```cpp
2022/6/22 22:12
加载中...