ATSTNG

Untitled

Sep 19th, 2019
773
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.60 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <iomanip>
  4. #include <algorithm>
  5. #include <math.h>
  6. #include <stack>
  7. #include <queue>
  8. #include <deque>
  9. #include <vector>
  10. #include <set>
  11. #include <string>
  12. #include <map>
  13.  
  14. using namespace std;
  15.  
  16. typedef long long ll;
  17.  
  18. pair <ll, pair <ll, ll>> A[200];
  19. set <pair <ll, ll>> S[4];
  20. ll ans[200];
  21.  
  22. int main() {
  23. #ifdef _DEBUG
  24.     freopen("input.txt", "r", stdin);
  25. #else
  26.     freopen("carrefour.in", "r", stdin);
  27.     freopen("carrefour.out", "w", stdout);
  28. #endif
  29.     ll n;
  30.     cin >> n;
  31.     ll a, b;
  32.     cin >> a >> b;
  33.     a %= 4; b %= 4;
  34.     for (ll i = 0; i < n; i++) {
  35.         cin >> A[i].second.second >> A[i].first;
  36.         A[i].second.second %= 4;
  37.         A[i].second.first = i;
  38.     }
  39.     A[n].second.first = n;
  40.     A[n].first = 100000;
  41.     A[n].second.second = 0;
  42.     n++;
  43.     ll t = 0;
  44.     sort(A, A + n);
  45.     if ((a + b) % 2 == 0) {
  46.         ll a1 = (a + 3) % 4;
  47.         ll b1 = (b + 3) % 4;
  48.         for (ll i = 0; i < n; i++) {
  49.             ll j = i;
  50.             t++;
  51.             while (A[j].first == t) {
  52.                 S[A[j].second.second].insert(make_pair(t, A[j].second.first));
  53.                 j++;
  54.                 if (j == n) {
  55.                     break;
  56.                 }
  57.             }
  58.             j--;
  59.             i = j;
  60.             if (S[a].size() > 0 || S[b].size() > 0) {
  61.                 if (S[a].size() > 0) {
  62.                     ans[(*S[a].begin()).second] = t;
  63.                     S[a].erase(S[a].begin());
  64.                 }
  65.                 if (S[b].size() > 0) {
  66.                     ans[(*S[b].begin()).second] = t;
  67.                     S[b].erase(S[b].begin());
  68.                 }
  69.                 continue;
  70.             }
  71.             else {
  72.                 if (S[a1].size() > 0) {
  73.                     ans[(*S[a1].begin()).second] = t;
  74.                     S[a1].erase(S[a1].begin());
  75.                 }
  76.                 if (S[b1].size() > 0) {
  77.                     ans[(*S[b1].begin()).second] = t;
  78.                     S[b1].erase(S[b1].begin());
  79.                 }
  80.             }
  81.         }
  82.         for (ll i = 0; i < n - 1; i++) {
  83.             cout << ans[i] << '\n';
  84.         }
  85.         return 0;
  86.     }
  87.     ll a1, b1;
  88.     if (b == (a + 1) % 4) {
  89.         swap(a, b);
  90.     }
  91.     b1 = (a + 1) % 4;
  92.     a1 = (a + 2) % 4;
  93.     for (ll i = 0; i < n; i++) {
  94.         ll j = i;
  95.         t++;
  96.         while (A[j].first == t) {
  97.             S[A[j].second.second].insert(make_pair(t, A[j].second.first));
  98.             j++;
  99.             if (j == n) {
  100.                 break;
  101.             }
  102.         }
  103.         j--;
  104.         i = j;
  105.         if (S[a].size() > 0 || S[b].size() > 0) {
  106.             if (S[b].size() > 0) {
  107.                 ans[(*S[b].begin()).second] = t;
  108.                 S[b].erase(S[b].begin());
  109.                 continue;  
  110.             }
  111.             if (S[a].size() > 0) {
  112.                 ans[(*S[a].begin()).second] = t;
  113.                 S[a].erase(S[a].begin());
  114.             }
  115.             continue;
  116.         }
  117.         else {
  118.             if (S[b1].size() > 0) {
  119.                 ans[(*S[b1].begin()).second] = t;
  120.                 S[b1].erase(S[b1].begin());
  121.                 continue;
  122.             }
  123.             if (S[a1].size() > 0) {
  124.                 ans[(*S[a1].begin()).second] = t;
  125.                 S[a1].erase(S[a1].begin());
  126.             }
  127.         }
  128.     }
  129.     for (ll i = 0; i < n - 1; i++) {
  130.         cout << ans[i] << '\n';
  131.     }
  132. }
Advertisement
Add Comment
Please, Sign In to add comment