Submission #100644

#TimeUsernameProblemLanguageResultExecution timeMemory
100644Pro_ktmrSnowy Roads (JOI16_snowy)C++14
20 / 100
22 ms1328 KiB
#include"bits/stdc++.h" using namespace std; #include"Anyalib.h" #define MP(a,b) make_pair(a,b) static int n; static int par[500]; static int toPar[500]; void InitAnya(int N, int A[], int B[]){ n = N; vector<pair<int,int> > tonari[500]; for(int i=0; i<N-1; i++){ tonari[A[i]].push_back(MP(B[i],i)); tonari[B[i]].push_back(MP(A[i],i)); } par[0] = 0; queue<int> que; que.push(0); while(!que.empty()){ int now = que.front(); que.pop(); for(int i=0; i<tonari[now].size(); i++){ if(tonari[now][i].first == par[now]) continue; par[tonari[now][i].first] = now; toPar[tonari[now][i].first] = tonari[now][i].second; que.push(tonari[now][i].first); } } } //void Save(int place, int bit) static int memo[100]; static int C2[99]; static int wa(int i){ if(memo[i] != -1) return memo[i]; return memo[i] = wa(par[i]) + C2[toPar[i]]; } void Anya(int C[]){ for(int i=0; i<n-1; i++) C2[i] = C[i]; if(n <= 100){ for(int i=0; i<n; i++) memo[i] = -1; memo[0] = 0; for(int i=0; i<n; i++){ int tmp = wa(i); for(int j=0; j<10; j++){ Save(i*10+j, (tmp>>9-j)%2); } } } if(n > 100){ int tmp = 0; int next = 0; for(int i=0; i<n; i++){ if(i%10 == 0){ for(int j=0; j<10; j++){ Save(next, (tmp>>9-j)%2); next++; } } Save(next, C[i]); next++; tmp += C[i]; } } }
#include"bits/stdc++.h" using namespace std; #include"Borislib.h" #define MP(a,b) make_pair(a,b) static int n; static int par[500]; static int toPar[500]; void InitBoris(int N, int A[], int B[]){ n = N; vector<pair<int,int> > tonari[500]; for(int i=0; i<N-1; i++){ tonari[A[i]].push_back(MP(B[i],i)); tonari[B[i]].push_back(MP(A[i],i)); } par[0] = 0; queue<int> que; que.push(0); while(!que.empty()){ int now = que.front(); que.pop(); for(int i=0; i<tonari[now].size(); i++){ if(tonari[now][i].first == par[now]) continue; par[tonari[now][i].first] = now; toPar[tonari[now][i].first] = tonari[now][i].second; que.push(tonari[now][i].first); } } } //Ask(int place) int Boris(int city){ int ans = 0; if(n <= 100){ for(int i=0; i<10; i++){ ans += Ask(city*10+i)<<(9-i); } } if(n > 100){ int idx = city/10; city *= 10; idx *= 2; for(int i=0; i<10; i++){ ans += Ask(idx+i)<<(9-i); } for(int i=0; i<=city%10; i++){ ans += Ask(idx+10+i); } } return ans; }

Compilation message (stderr)

Anya.cpp: In function 'void InitAnya(int, int*, int*)':
Anya.cpp:22:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0; i<tonari[now].size(); i++){
                ~^~~~~~~~~~~~~~~~~~~
Anya.cpp: In function 'void Anya(int*)':
Anya.cpp:46:25: warning: suggest parentheses around '-' inside '>>' [-Wparentheses]
     Save(i*10+j, (tmp>>9-j)%2);
                        ~^~
Anya.cpp:56:24: warning: suggest parentheses around '-' inside '>>' [-Wparentheses]
      Save(next, (tmp>>9-j)%2);
                       ~^~

Boris.cpp: In function 'void InitBoris(int, int*, int*)':
Boris.cpp:22:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0; i<tonari[now].size(); i++){
                ~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...