CCF认证-20170902-公共钥匙盒 80分 运行错误 求助大佬

原题连接

#include<bits/stdc++.h>
using namespace std;
set<int>borrow[10500];
set<int>repay[10500];
int main(){
    int n, k, w, s, c;
    cin >>n >>k;
    int hash[n+1];
    for(int i = 1; i < n+1; i++){
        hash[i] = i;
    }
    while(k--){
        cin >>w >>s >>c;
        borrow[s].insert(w);
        repay[s+c].insert(w);
    }
    // 开始一秒一秒 查! 
    for(int i = 1; i < 10500; i++){

        while(repay[i].size() != 0) {//先看看有没有老师要换钥匙 
        set<int>::iterator it = repay[i].begin();
        repay[i].erase(it);
        int j = 1;
        while( hash[j] != 0) j++;
        hash[j] = *it ;  //当有的时候 循环hash 见缝插针 
       }
    // 看看有没有老师要借钥匙 如法炮制
    while(borrow[i].size() != 0){
        set<int>::iterator it = borrow[i].begin();
        borrow[i].erase(it);
        int v = 1;
        while( hash[v] != *it) v++;
        hash[v] = 0 ; 

    }   
   }
   for(int i = 1; i < n+1; i++){
        cout << hash[i]<<" ";
    }
return 0;
}