どのPCにログインし、どのPCからログアウトしたかは考えず、
ログイン数、ログアウト数を利用する。
/********************************************
* 2012/07/02 *
* AOJ Volume11 1148 *
* Analyzing Login/Logout Records *
* crane *
*********************************************/
#include<iostream>
#define MAX_R 1000
using namespace std;
int main(){
int n,m; //n->PC数 m->学生数
while(cin >> n >> m, (n||m)){
int r; //r->利用記録数
cin >> r;
int it[MAX_R], in[MAX_R], im[MAX_R], is[MAX_R];
for(int i=0; i<r; i++)
cin >> it[i] >> in[i] >> im[i] >> is[i];
int q;
cin >> q; //q->質問数
for(int i=0; i<q; i++){
int ts, te, tm;
cin >> ts >> te >> tm;
int sum = 0, cnt=0, s = 0, e = 0;
for(int j=0; j<r; j++){
if(im[j] == tm){
if(is[j] == 1){ //ログイン
if(cnt==0){
if(it[j] < te){
if(ts < it[j]) s = it[j];
else s = ts;
}else s = te;
}
cnt++;
}else if(is[j] == 0){ //ログアウト
cnt--;
if(cnt==0){
if(it[j] < te) e = it[j];
else e = te;
if(s <= e && ts<e) sum += e - s;
}else e = te;
}
}
}
if(cnt > 0) sum += te - s;
cout << sum << endl;
}
}
return 0;
}
0 件のコメント:
コメントを投稿