Submission #341763

#TimeUsernameProblemLanguageResultExecution timeMemory
341763ogibogi2004Saveit (IOI10_saveit)C++14
0 / 100
290 ms14940 KiB
#include "grader.h" #include "encoder.h" #include<bits/stdc++.h> using namespace std; string s; int dist[40][1024]; vector<int>g[1024]; void bfs(int u) { queue<int>q; q.push(u); for(int i=0;i<1024;i++) { dist[u][i]=100000; } dist[u][u]=0; while(!q.empty()) { int u1=q.front(); q.pop(); for(auto v:g[u1]) { if(dist[u][u1]+1<dist[u][v]) { dist[u][v]=dist[u][u1]+1; q.push(v); } } } } void encode(int nv, int nh, int ne, int *v1, int *v2){ for(int i=0;i<ne;i++) { g[v1[i]].push_back(v2[i]); g[v2[i]].push_back(v1[i]); } for(int i=0;i<nh;i++) { bfs(i); } for(int i=0;i<nh;i++) { for(int j=i+1;j<nh;j++) { for(int l=0;l<10;l++) { if((1<<l)&dist[i][j]) { s+='1'; } else s+='0'; } } } for(int i=nh;i<nv;i++) { int smallest=100000; vector<int>v; for(int j=0;j<nh;j++) { if(dist[j][i]<smallest) { smallest=dist[j][i]; v.clear(); } if(dist[j][i]==smallest) { v.push_back(j); } } bool b[40]; memset(b,0,sizeof(b)); for(auto xd:v)b[xd]=1; for(int l=0;l<nh;l++) { if(b[l])s+="1"; else s+="0"; } /*for(int l=0;l<6;l++) { if((1<<l)&p.second) { s+="1"; } else s+="0"; }*/ for(int l=0;l<10;l++) { if((1<<l)&smallest) { s+="1"; } else s+="0"; } } for(int i=0;i<s.size();i++)encode_bit((int)s[i]-'0'); return; }
#include "grader.h" #include "decoder.h" #include<bits/stdc++.h> using namespace std; int dist[1024][1024]; int dist_to_closest[1024]; vector<int>closest[1024]; void decode(int nv, int nh) { memset(dist,0,sizeof(dist)); for(int i=0;i<nh;i++) { for(int j=i+1;j<nh;j++) { for(int l=0;l<10;l++) { int x=decode_bit(); dist[i][j]+=(x<<l); } dist[j][i]=dist[i][j]; } } for(int i=nh;i<nv;i++) { for(int l=0;l<nh;l++) { int x=decode_bit(); if(x==1)closest[i].push_back(l); } for(int l=0;l<10;l++) { int x=decode_bit(); dist_to_closest[i]+=(x<<l); } } for(int i=0;i<nh;i++) { for(int j=0;j<nh;j++) { hops(i,j,dist[i][j]); } } /*for(int i=nh;i<nv;i++) { for(int j=0;j<nh;j++) { } }*/ for(int i=nh;i<nv;i++) { for(int j=0;j<nh;j++) { int ans=10000; for(auto l:closest[i]) { ans=min(ans,dist[l][j]+dist_to_closest[i]); } hops(j,i,ans); } } }

Compilation message (stderr)

encoder.cpp: In function 'void encode(int, int, int, int*, int*)':
encoder.cpp:96:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   96 |   for(int i=0;i<s.size();i++)encode_bit((int)s[i]-'0');
      |               ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...