Submission #499315

#TimeUsernameProblemLanguageResultExecution timeMemory
499315avaneeshk098Elder (COCI19_elder)C++17
50 / 50
1 ms316 KiB
#include <bits/stdc++.h> #pragma GCC optimize "trapv" #define ff first #define int long long int #define ss second #define pb push_back #define mp make_pair #define mt make_tuple #define pii pair<int,int> #define vi vector<int> #define mii map<int,int> #define pqb priority_queue<int> #define max_size 100000000 #define pqs priority_queue<int,vi,greater<int> > #define setbits(x) __builtin_popcountll(x) #define mod (int)1e9+7 #define w(t) int t; cin >> t; while(t--) #define inf 1e18 //#define ps(x,y) fixed<<setprecision(y)<<x #define mk(arr,n,type) type *arr=new type[n]; #define range(a,b) substr(a,b-a+1) #define mina(a,b,c) min(a, min(b, c)) #define maxa(a,b,c) max(a, max(b, c)) #define sz(a) (int)a.size() #define endl '\n' #define trace(x) cerr<<#x<<": "<<x<<" "<<endl; #define FIO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define FOR(x,y) for(int i = x; i < y; i++) #define rrep(a,b,x,y) for(int x = 0; x < a; x++) for(int y = 0; y < b; y++) #define rrep1(a,b,x,y) for(int x = 1; x <= a; x++) for(int y = 0; y <= b; y++) #define rrepo(a,b,x,y) for(int x = 0; x < a; x++){ for(int y = 0; y < b; y++) #define rrepo1(a,b,x,y) for(int x = 1; x <= a; x++){ for(int y = 0; y <= b; y++) using namespace std; bool sortbysecond(const pair<int,int> &a, const pair<int,int> &b){ return (a.first > b.first); } int64_t ceil_div(int64_t a, int64_t b) {if(a%b != 0){ return ((a/b)+1);} else{ return (a/b);}} double max(double a, double b){ if(a >= b){ return a; } else{ return b; } } double min(double a, double b){if(a <= b){return a;} else{return b; }} bool modd(double a, double b){if(floor(a/b) == ceil(a/b)){return true;} return false;} bool stringsort(const string &a, const string &b){return a.length() > b.length();} bool specsort(const pair<long double,int> &a, const pair<long double,int> &b){ return a.first - a.second > b.first - b.second; } struct ufds{ vi link, siz; int cmp; ufds(int n) : link(n), siz(n,1) { iota(link.begin(), link.end(), 0); cmp = n;} int find(int x){ if(x == link[x]) return x; return link[x] = find(link[x]); } bool same(int x, int y){ return find(x) == find(y); } bool unite(int x, int y){ x = find(x); y = find(y); if(x == y) return false; if(x < y) swap(x,y); siz[x] += siz[y]; link[y] = x; cmp--; return true; } int components(){ return cmp; } bool size(int x){ return siz[find(x)]; } void print(){ for(auto i : siz) cout << i << " "; cout << endl; } }; struct segtree{ vi a; vector<int> seg; segtree(int n, vi &b) : seg(4*n) { a = b; } void build(int l, int r, int pos){ if(l == r){ // if l == r it means it is a laef node so only 1 minimum seg[pos] = a[l-1]; return; } int mid = (l+r)/2; build(l,mid, pos*2); // filling left tree for minimum build(mid+1, r, pos*2+1); // filling right tree for minimum seg[pos] = max(seg[pos*2], seg[pos*2+1]); } int query(int l, int r, int ql, int qr, int pos){ if(l > qr || r < ql) return 0; if(l >= ql && r <= qr) return seg[pos]; int mid = (l+r)/2; int q1 = query(l, mid, ql, qr, pos*2); int q2 = query(mid+1, r, ql, qr, pos*2 + 1); return max(q1,q2); } void print(){ for(auto i : seg) cout << i << " "; cout << endl; } }; void solve(){ char c; cin >> c; int n; cin >> n; set<char> s; s.insert(c); char curr = c; FOR(0,n){ char a,b; cin >> a >> b; if(b == curr){ s.insert(a); curr = a; } } cout << curr << endl; cout << s.size() << endl; } int32_t main(){ FIO; //w(t){solve();} solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...