제출 #792576

#제출 시각아이디문제언어결과실행 시간메모리
792576irmuun저장 (Saveit) (IOI10_saveit)C++17
컴파일 에러
0 ms0 KiB
#include<bits/stdc++.h> #include "grader.h" #include "encoder.h" using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define all(s) s.begin(),s.end() struct dsu{ vector<int>p,sz; dsu(int n){ p.resize(n+1); iota(p.begin(),p.end(),0); sz.resize(n+1); fill(sz.begin(),sz.end(),1); } int find(ll x){ if(p[x]==x){ return x; } return p[x]=find(p[x]); } bool same(int x,int y){ x=find(x); y=find(y); if(x==y){ return true; } else{ return false; } } void merge(int x,int y){ x=find(x); y=find(y); if(x!=y){ if(sz[x]<sz[y]){ swap(x,y); } sz[x]+=sz[y]; p[y]=x; } } }; void encode(int N,int H,int P,int *A,int *B){ vector<int>adj[N]; for(int i=0;i<P;i++){ adj[A[i]].pb(B[i]); adj[B[i]].pb(A[i]); } dsu ds(N); vector<int>d[N],used(N,0); for(int i=0;i<P;i++){ if(ds.same(A[i],B[i])){ ds.merge(A[i],B[i]); d[A[i]].pb(B[i]); d[B[i]].pb(A[i]); } } vector<int>ord; function <void(int)> dfs=[&](int x){ used[x]=1; ord.pb(x); for(auto y:d[x]){ if(used[y]==0){ dfs(y); } } }; for(auto x:ord){ for(int i=0;i<10;i++){ encode_bit(x%2); x/=2; } } int dist[N]; for(int i=0;i<H;i++){ fill(dist,dist+N,-1); queue<int>q; dist[i]=0; q.push(i); while(!q.empty()){ int x=q.front(); q.pop(); for(auto y:adj[x]){ if(dist[y]==-1){ dist[y]=dist[x]+1; q.push(y); } } } for(int j=0;j<N;j++){ if(j==0){ int y=dist[v[0]]; for(int k=0;k<10;k++){ encode_bit(y%2); y/=2; } } else{ if(dist[v[j]]==dist[v[j-1]]){ encode_bit(0); encode_bit(0); } if(dist[v[j]]==dist[v[j-1]]-1){ encode_bit(0); encode_bit(1); } if(dist[v[j]]==dist[v[j-1]]+1){ encode_bit(1); encode_bit(1); } } } } }
#include<bits/stdc++.h> #include "grader.h" #include "decoder.h" using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define all(s) s.begin(),s.end() void decode(int N,int H){ int ver[N]; for(int i=0;i<N;i++){ ver[i]=0; for(int j=0;j<10;j++){ ver[i]+=(1<<j)*decode_bit(); } } for(int i=0;i<H;i++){ int dist=0; for(int j=0;j<10;j++){ dist+=(1<<j)*encode_bit(); } hops(i,ver[0],dist); for(int j=1;j<N;j++){ int x=decode_bit(); x+=decode_bit(); if(x==0){ dist--; } if(x==2){ dist++; } hops(i,ver[j],dist); } } }

컴파일 시 표준 에러 (stderr) 메시지

encoder.cpp: In function 'void encode(int, int, int, int*, int*)':
encoder.cpp:99:28: error: 'v' was not declared in this scope
   99 |                 int y=dist[v[0]];
      |                            ^
encoder.cpp:106:25: error: 'v' was not declared in this scope
  106 |                 if(dist[v[j]]==dist[v[j-1]]){
      |                         ^
encoder.cpp:110:25: error: 'v' was not declared in this scope
  110 |                 if(dist[v[j]]==dist[v[j-1]]-1){
      |                         ^
encoder.cpp:114:25: error: 'v' was not declared in this scope
  114 |                 if(dist[v[j]]==dist[v[j-1]]+1){
      |                         ^

decoder.cpp: In function 'void decode(int, int)':
decoder.cpp:24:37: error: too few arguments to function 'void encode_bit(int)'
   24 |             dist+=(1<<j)*encode_bit();
      |                                     ^
In file included from decoder.cpp:2:
grader.h:1:6: note: declared here
    1 | void encode_bit(int b);
      |      ^~~~~~~~~~