Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- using namespace std;
- const int N = 100;
- struct Pair {
- int id, sz;
- } a[N];
- struct Answer {
- int day, hour, room;
- } ans[N][N];
- int n, id_course[N], id_group[N], sz_group[N], k_group[N], m, l, id_room[N], sz_room[N], course[N][N];
- string prof[N];
- bool was[N][N][N];
- void find(int id, int j){
- for(int day = 1; day <= 5; day++){
- for(int hour = 9; hour <= 18; hour++){
- for(int room = 0; room < l; room++){
- if(sz_room[room] >= sz_group[id] && !was[day][hour][room]){
- ans[id][j].day = day;
- ans[id][j].hour = hour;
- ans[id][j].room = id_room[room];
- was[day][hour][room] = true;
- return;
- }
- }
- }
- }
- }
- bool cmp(Pair p1, Pair p2){
- return p1.sz > p2.sz;
- }
- int main(){
- cin >> n;
- for(int i = 0; i < n; i++){
- cin >> id_course[i];
- cin >> prof[id_course[i]];
- }
- cin >> m;
- for(int j = 0; j < m; j++){
- cin >> id_group[j];
- cin >> sz_group[id_group[j]]
- cin >> k_group[id_group[j]];
- a[j].id = id_group[j];
- a[j].sz = sz_group[id_group[j]];
- for(int i = 0; i < k_group[id_group[j]]; i++){
- cin >> course[id_group[j]][i];
- }
- }
- cin >> l;
- for(int i = 0; i < l; i++){
- cin >> id_room[i] >> sz_room[i];
- }
- sort(a, a + m, cmp);
- for(int i = 0; i < m; i++){
- for (int j = 0; j < k_group[a[i].id]; j++)
- find(a[i].id, course[a[i].id][j]);
- }
- for(int i = 0; i < m; i++){
- cout << id_group[i] << endl;
- //cout << k_group[id_group[i]];
- for(int j = 0; j < k_group[id_group[i]]; j++){
- cout << prof[course[id_group[i]][j]] << " " << ans[id_group[i]][course[id_group[i]][j]].day << " " << ans[id_group[i]][course[id_group[i]][j]].hour << " " << ans[id_group[i]][course[id_group[i]][j]].room << endl;
- }
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment