CSES - UKIEPC 2017 - Results
Submission details
Task:Education
Sender:KnowYourArchitecture
Submission time:2017-10-31 20:01:15 +0200
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#2ACCEPTED0.04 sdetails
#3ACCEPTED0.04 sdetails
#4ACCEPTED0.04 sdetails
#5ACCEPTED0.05 sdetails
#6ACCEPTED0.06 sdetails
#7ACCEPTED0.07 sdetails
#8ACCEPTED0.07 sdetails
#9ACCEPTED0.05 sdetails
#10ACCEPTED0.06 sdetails
#11ACCEPTED0.05 sdetails
#12ACCEPTED0.05 sdetails
#13ACCEPTED0.03 sdetails
#14ACCEPTED0.04 sdetails
#15ACCEPTED0.04 sdetails
#16ACCEPTED0.04 sdetails
#17ACCEPTED0.03 sdetails
#18ACCEPTED0.06 sdetails

Code

#include <bits/stdc++.h>
using namespace std;

int dep[5001];
int rent[5001];
int cap[5001];
int taken[5001];
int asd[5001];

int main() {
  int n, m;
  cin >> n >> m;
  vector<pair<int, int>> deps;
  vector<pair<int, pair<int, int>>> bs;
  for(int i=0;i<n;i++) {
    cin >> dep[i];
    deps.push_back({-dep[i], i});
  }
  for(int i=0;i<m;i++) cin >> cap[i];
  for(int i=0;i<m;i++) cin >> rent[i];
  for(int i=0;i<m;i++) {
    bs.push_back({rent[i], {cap[i], i}});
  }
  sort(bs.begin(), bs.end());
  sort(deps.begin(), deps.end());
  int ndep = 0;
  for(auto dep : deps) {
    int needed = -dep.first;
    for(int i=0;i<m;i++) {
      auto consider = bs[i];
      if(consider.second.first >= needed && !taken[consider.second.second]) {
        taken[consider.second.second] = true;
        asd[dep.second] = consider.second.second;
        ndep++;
        break;
      }
    }
  }
  if(ndep != n) {
    cout << "impossible" << endl;
  } else {
    for(int i=0;i<n;i++) {
      cout << asd[i]+1 << " ";
    } cout << endl;
  }
  return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
2 3
1 2
2 1 2
1 1 2

correct output
2 1

user output
2 1 

Test 2

Verdict: ACCEPTED

input
100 400
405 604 662 507 209 320 336 94...

correct output
183 205 248 236 150 50 169 42 ...

user output
183 205 248 236 150 50 169 42 ...

Test 3

Verdict: ACCEPTED

input
100 400
596 494 947 89 739 940 923 190...

correct output
296 159 51 231 329 38 47 75 46...

user output
296 159 51 231 329 38 47 75 46...

Test 4

Verdict: ACCEPTED

input
100 400
545 934 613 647 534 10 587 305...

correct output
impossible

user output
impossible

Test 5

Verdict: ACCEPTED

input
100 4000
314 533 236 932 593 139 397 73...

correct output
3230 1223 242 3511 2586 1530 1...

user output
3230 1223 242 3511 2586 1530 1...

Test 6

Verdict: ACCEPTED

input
100 4000
498 47 243 573 606 538 182 622...

correct output
505 1476 2870 3282 2624 1889 3...

user output
505 1693 2870 1177 2624 1889 3...

Test 7

Verdict: ACCEPTED

input
4000 5000
992 110 627 188 444 785 607 12...

correct output
impossible

user output
impossible

Test 8

Verdict: ACCEPTED

input
4000 5000
981 602 417 68 723 17 189 349 ...

correct output
impossible

user output
impossible

Test 9

Verdict: ACCEPTED

input
2000 5000
942 801 7 58 865 535 63 925 45...

correct output
2654 2673 4524 642 3560 4043 3...

user output
1375 1696 3937 3576 2437 4043 ...

Test 10

Verdict: ACCEPTED

input
2000 5000
346 342 325 791 867 387 167 43...

correct output
2155 1691 1107 4196 3676 396 7...

user output
3343 3359 1973 3461 3676 856 4...

Test 11

Verdict: ACCEPTED

input
2000 5000
379 181 81 244 67 138 311 763 ...

correct output
609 2016 34 1828 252 2270 4016...

user output
2351 1396 2992 3685 4355 4198 ...

Test 12

Verdict: ACCEPTED

input
2000 5000
699 504 823 38 915 215 167 649...

correct output
2127 3976 4307 4103 2537 2779 ...

user output
3912 963 2739 2831 2494 3978 1...

Test 13

Verdict: ACCEPTED

input
1000 5000
769 231 535 397 155 434 183 71...

correct output
2149 4078 402 3128 1111 190 40...

user output
3194 1546 3323 1158 880 190 40...

Test 14

Verdict: ACCEPTED

input
1000 5000
709 604 503 881 60 756 49 428 ...

correct output
1871 3716 4183 3032 2328 731 1...

user output
4578 3716 4183 1495 2328 3233 ...

Test 15

Verdict: ACCEPTED

input
500 5000
41 585 417 384 533 606 594 601...

correct output
4475 3687 4699 1002 1733 2047 ...

user output
4475 3774 4699 126 290 2913 26...

Test 16

Verdict: ACCEPTED

input
500 5000
812 250 707 106 652 202 79 336...

correct output
453 2854 3746 2833 2181 4988 2...

user output
453 1357 3746 3256 2181 4450 2...

Test 17

Verdict: ACCEPTED

input
500 5000
607 412 339 886 191 583 330 80...

correct output
4477 2936 2069 2026 4103 1012 ...

user output
3480 1377 2069 2977 4103 1012 ...

Test 18

Verdict: ACCEPTED

input
5000 5000
2 3 4 5 6 7 8 9 10 11 12 13 14...

correct output
4001 4002 4003 4004 4005 4006 ...

user output
1 2 3 4 5 6 7 8 9 10 11 12 13 ...