61012023-10-29 19:59:03hackemonBürokrácia (40)cpp17Accepted 40/4025ms7808 KiB
#include <bits/stdc++.h>
using namespace std;
//using namespace std::chrono;

#define pii pair<int,int>
#define pb push_back
#define vi vector<int>
#define vb vector<bool>
#define vl vector<ll>
#define vvi vector<vi>
#define vvb vector<vb>
#define vvl vector<vl>
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
#define fScan {ios_base::sync_with_stdio(false); cin.tie(NULL);}
#define rep(i, a, b) for(int i = a; i < (b); i++)
#define REP(i, n) for(int i = 0;i <(n); i++)
using ll = long long;
using ld = long double;
ll mod = 1000000007;

const char ny =  '\n';

bool prime(ll a) {
    if (a==1) return 0;
    for (int i=2;i*i<=a;++i)
    {
        if (a%i==0) return 0;
    }
    return 1;
}

ll gcd(ll a,ll b) {
    if (b==0) return a;
    return gcd(b,a%b);
}

ll lcm(ll a,ll b)
{
    return a/gcd(a,b)*b;
}

ll min(int a, ll b) {
    if(a< b) return a;
    else return b;
}

void dfs(int ki) {

}
int n = 200001;
vector<int> be(n+1);
vector<int> ki(n+1);
vector<bool> jo(n+1, 1);



void solve() { 
        cin >> n;
        for(int i = 1;i <= n;i++ ) {
            char v;
            cin >> v;
            
            if(v == 'V') {
                int val;
                cin >> val;
               be[val]++;
               ki[i] = val;
            } else {
                ki[i] = i;
            }
        }

        queue<int> most;
        
    
        for(int i = 1;i<=n;i++ ) {
            if(be[i] == 0) {
                most.push(i);
            }
        }
        
        while(!most.empty()) {
            if(ki[most.front()] != most.front()) {
                if(jo[most.front()]!=0) {
                    jo[ki[most.front()]] = 0;
                }
                be[ki[most.front()]]--;
                if(be[ki[most.front()]] == 0) {
                    most.push(ki[most.front()]);
                }
            }
            most.pop();
        }
        
        int total = 0;
        for(int i = 1;i< n+1;i++ ) {
            total+= jo[i];
        }

        cout << total << '\n';
        for(int i = 1;i < n+1;i++ ) {
            if(jo[i] == 1)
            cout << i << ' ';
        }
    }


int main()
{
    fScan

    int t = 1;
    //comment out if necessary
    //cin>> t;


    //auto start = high_resolution_clock::now();
    while(t-- ) {
        solve();
    }
    //auto end = high_resolution_clock::now();
    //auto dur = duration_cast<milliseconds>(end-start);
    //cout<< "runtime: " << dur.count() << " milliseconds" << '\n';
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base40/40
1Accepted0/04ms4788 KiB
2Accepted1/14ms5076 KiB
3Accepted1/14ms5288 KiB
4Accepted1/14ms5240 KiB
5Accepted1/114ms6564 KiB
6Accepted1/121ms5508 KiB
7Accepted1/120ms5800 KiB
8Accepted2/223ms6212 KiB
9Accepted2/223ms6208 KiB
10Accepted2/223ms6328 KiB
11Accepted2/224ms6564 KiB
12Accepted2/216ms7064 KiB
13Accepted2/216ms7264 KiB
14Accepted2/223ms6820 KiB
15Accepted2/220ms6856 KiB
16Accepted2/216ms7524 KiB
17Accepted2/216ms7420 KiB
18Accepted2/216ms7428 KiB
19Accepted2/214ms7664 KiB
20Accepted2/214ms7720 KiB
21Accepted2/214ms7808 KiB
22Accepted2/220ms6680 KiB
23Accepted4/425ms7480 KiB