【CCF例年問題解決】201709-2公共鍵箱【シミュレーション】
9409 ワード
構造を定義します.まず入力をこのような構造の要素に変換してから、並べ替えてから順番に処理すればいいです.
#include
#include
using namespace std;
const int N = 1010;
typedef pair<int,pair<int,int>> PIII; // > :0, 1
int n,k;
vector<PIII> list;
int st[N]; // int
int main()
{
cin >> n >> k;
for(int i=1;i<=n;i++) st[i] = i;
while(k -- )
{
int w,s,c;
cin >> w >> s >> c; // , ,
list.push_back({
s,{
1,w}});
list.push_back({
s + c,{
0,w}});
}
sort(list.begin(),list.end());
for(auto c : list)
{
int time = c.first, type = c.second.first, num = c.second.second;
if(type == 0){
//
for(int i = 1;i<=n;i++)
if(!st[i]) {
st[i] = num;
break;
}
}
else{
// ,
for(int i =1;i<=n;i++)
if(st[i] == num){
st[i] = 0;
break;
}
}
//printf("%d %d %d
",time,type,num);
// for(int i=1;i<=n;i++) cout << st[i] << " ";
// cout << endl;
}
for(int i=1;i<=n;i++) cout << st[i] << " ";
return 0;
}