Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- void task1() {
- int n;
- long long t;
- cin >> n;
- cin >> t;
- vector <int> a;
- for (int i = 0; i < n; i++) {
- int cur_t;
- cin >> cur_t;
- a.push_back(cur_t);
- }
- int cnt = 0;
- for (int i = 0; i < n; i++) {
- cnt++;
- if (a[i] != 86400) {
- int free_t = 86400 - a[i];
- t = t - free_t;
- if (t <= 0) {
- break;
- }
- }
- }
- cout << cnt;
- }
- void task2() {
- int n, x;
- cin >> n >> x;
- vector <int> a;
- for (int i = 0; i < n; i++) {
- int b;
- cin >> b;
- a.push_back(b);
- }
- int len = 0;
- for (int i = 0; i < n; i++) {
- len += a[i];
- if (i != n - 1) {
- len++;
- }
- }
- if (len == x) {
- cout << "YES";
- return;
- }
- if (len < x) {
- cout << "NO";
- return;
- }
- if (len > x) {
- cout << "NO";
- return;
- }
- }
- void task3() {
- int n;
- cin >> n;
- unordered_map <int,int> a;
- for (int i = 1; i <= n; i++) {
- int b;
- cin >> b;
- a[i] = b;
- }
- unordered_map <int, int> nums;
- vector <int> d;
- unordered_map <int, pair<int,int>> q;
- int max = 0, max2 = 0;
- bool flag = true;
- for (int i = 1; i <= n; i++) {
- flag = true;
- int num = 1;
- int start = i;
- int next = a[i];
- while (next != start) {
- next = a[next];
- start = next;
- next = a[start];
- next = a[next];
- num++;
- }
- if (num > max) {
- max = num;
- q[0].first = i;
- q[0].second = max;
- flag = false;
- }
- if (num <= max && !flag) {
- q[1].first = i;
- q[1].second = num;
- }
- nums[i] = num;
- }
- for (int i = 1; i <= n; i++) {
- cout << i << " " << nums[i] << endl;
- }
- }
- int main() {
- //task1();
- //task2();
- task3();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement