답안 #660646

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
660646 2022-11-22T17:34:23 Z BidoTeima Poklon (COCI17_poklon) C++17
0 / 140
1601 ms 524288 KB
/*
ID: BidoTeima
LANG: C++11
TASK: 
*/
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
void moo(string filename);
void ACPLS(string str = "")
{
    if(str=="NOF")return;
    if(str.size())
        moo(str);
    else{
        #ifndef ONLINE_JUDGE
            freopen("output.txt", "w", stdout);
            freopen("input.txt", "r", stdin);
        #endif
    }
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
}
void moo(string fileName){
    freopen((fileName+".in").c_str(),"r",stdin);
    freopen((fileName+".out").c_str(),"w",stdout);
}
#define tc         \
    int tttttt/*,subtask*/;    \
    cin >> tttttt/* >> subtask*/; \
    while (tttttt--)/*end
*/
map<ll,vector<ll>>adj{};
map<ll,ll>sum{};
vector<ll>sorted; 
void toposort(ll node){
    if(node<=0)return;
    assert(adj[node].size()>1);
    toposort(adj[node][0]);
    toposort(adj[node][1]);
    sorted.push_back(node);
}
void dfs(ll node){
    if(node<=0)return;
    assert(adj[node].size()>1);
    ll x=0,y=0;
    if(adj[node][0]>0){ 
        x=sum[adj[node][0]]; 
    }
    else{
        x=-adj[node][0]; 
    }
    if(adj[node][1]>0){ 
        y=sum[adj[node][1]]; 
    }
    else{
        y=-adj[node][1]; 
    }
    sum[node]+=x+y+abs(x-y);
}
int main()
{
    //ACPLS();   
    int n;
    cin>>n;
    for(int i = 1; i <= n; i++){
        int u,v;
        cin>>u>>v;
        adj[i].push_back(u);
        adj[i].push_back(v); 
    }
    toposort(1);
    for(int node : sorted){
        dfs(node);
    }
    string binary;
    while(sum[1]){
        binary.push_back((sum[1]%2)+'0');
        sum[1]/=2;
    }
    reverse(binary.begin(),binary.end());
    cout<<binary;
}

Compilation message

poklon.cpp: In function 'void ACPLS(std::string)':
poklon.cpp:17:20: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |             freopen("output.txt", "w", stdout);
      |             ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
poklon.cpp:18:20: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |             freopen("input.txt", "r", stdin);
      |             ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
poklon.cpp: In function 'void moo(std::string)':
poklon.cpp:26:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   26 |     freopen((fileName+".in").c_str(),"r",stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
poklon.cpp:27:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   27 |     freopen((fileName+".out").c_str(),"w",stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Runtime error 326 ms 524288 KB Execution killed with signal 9
2 Runtime error 331 ms 524288 KB Execution killed with signal 9
3 Runtime error 408 ms 524288 KB Execution killed with signal 9
4 Runtime error 373 ms 524288 KB Execution killed with signal 9
5 Runtime error 760 ms 524288 KB Execution killed with signal 9
6 Runtime error 649 ms 524288 KB Execution killed with signal 9
7 Runtime error 1601 ms 524288 KB Execution killed with signal 9
8 Runtime error 1507 ms 524288 KB Execution killed with signal 9
9 Runtime error 1584 ms 524288 KB Execution killed with signal 9
10 Runtime error 1434 ms 524288 KB Execution killed with signal 9