# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
404265 | Andyvanh1 | 마라톤 경주 (COCI14_utrka) | C++14 | 221 ms | 11208 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <fstream>
#include <math.h>
#include <iomanip>
using namespace std;
#define vt vector
#define INF 0x3f3f3f3f
#define pb push_back
#define FORR1(n) for(int i = 0; i < n; i++)
#define FORR2(i,n) for(int i = 0; i < n; i++)
#define all(u) u.begin(),u.end()
typedef long long ll;
typedef vt<int> vi;
typedef pair<int,int> pii;
struct CTD{
int size;
vi par;
vt<set<int>> tree;
vi sub;
void init(vt<set<int>> &adj){
size = adj.size();
par.resize(size);
tree=adj;
sub.resize(size);
par[0] = -1;
build(0,-1);
}
void build(int u, int p) {
int n = dfs(u, p); // find the size of each subtree
int centroid = find_centroid(u, p, n); // find the centroid
par[centroid] = p;
// for each tree resulting from the removal of the centroid
set<int> ref = tree[centroid];
for (auto v : ref) {
tree[centroid].erase(v); // remove the edge to disconnect
tree[v].erase(centroid); // the component from the tree
build(v, centroid);
}
}
int dfs(int u, int p) {
sub[u] = 1;
for (auto v : tree[u])
if (v != p) sub[u] += dfs(v, u);
return sub[u];
}
int find_centroid(int node, int p, int n){
for(auto& e: tree[node]){
if(e!=p&&sub[e]>n/2){
return find_centroid(e,node,n);
}
}
return node;
}
};
struct fwtree{
int size;
vi arr;
void init(int n){
size = n;
arr.resize(n+2);
for(int i = 0; i < n+2; i++){
arr[i] = 0;
}
}
void update(int i, int x){
for(; i <= size; i+=i&-i){
arr[i]+=x;
}
}
int get(int i){
int ans = 0;
for(; i > 0; i-=i&-i){
ans+=arr[i];
}
return ans;
}
int get(int l, int r){
return get(r)-get(l-1);
}
};
struct point{
long double x, y;
};
bool operator<(point p1, point p2){
return p2.x>p1.x||(p2.x==p1.x&&p2.y>p1.y);
}
struct rect{
int left, right, top, bottom;
};
pair<int,int> get(char c){
if(c=='z'){
return {9,4};
}else if(c=='s'){
return {7,4};
}else if(c>'s'){
c--;
}
int x = int(c-'a');
return{x/3+2,x%3+1};
}
void solve(){
multiset<string> names;
int n;
cin>>n;
for(int i = 0; i < n; i++){
string s;
cin>>s;
names.insert(s);
}
for(int i = 0; i < n-1; i++){
string s;
cin>>s;
names.erase(names.find(s));
}
cout<<(*(names.begin()));
}
int main() {
solve();
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |