제출 #535553

#제출 시각아이디문제언어결과실행 시간메모리
535553DeepessonData Transfer (IOI19_transfer)C++17
88 / 100
153 ms2500 KiB
#include <bits/stdc++.h> #include "transfer.h" std::vector<int> get_attachment(std::vector<int> source) { int xoro=0; int count=0; /// std::cout<<"Get: "<<source.size()<<"\n"; std::vector<int> g; for(int i=0;i!=source.size();++i){ if(source[i]){xoro^=i+1;++count;} } g.push_back(count&1); for(int i=0;i!=8;++i){ if(xoro&(1<<i))g.push_back(1);else g.push_back(0); } /// std::cout<<"Send: "<<g.size()<<"\n"; return g; } std::vector<int> retrieve(std::vector<int> data) { /// std::cout<<"Size: "<<data.size()<<"\n"; std::vector<int> primario,ajuda; for(int i=0;i!=data.size()-9;++i){ primario.push_back(data[i]); } for(int i=data.size()-9;i!=data.size();++i){ ajuda.push_back(data[i]); } int xoresperado=0,countesperado=ajuda[0]; for(int i=1;i!=ajuda.size();++i){ if(ajuda[i])xoresperado+=(1<<(i-1)); } int xoro=0,count=0; for(int i=0;i!=primario.size();++i){ if(primario[i]){xoro^=i+1;++count;} } bool check1=xoro==xoresperado; bool check2=(count&1)==(countesperado&1); ///Os dois checks estao corretos. O array eh igual. if(check1&&check2){ return primario; } ///Os checks estao dando resultados distintos: um dos checks esta corrompido\ ///Significa que o array esta intacto :p if(check1!=check2){ return primario; } ///Se chegou aq eh pq o array esta errado int falta = xoresperado^xoro; primario[falta-1]=!primario[falta-1]; return primario; }

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

transfer.cpp:43:5: warning: multi-line comment [-Wcomment]
   43 |     ///Os checks estao dando resultados distintos: um dos checks esta corrompido\
      |     ^
transfer.cpp: In function 'std::vector<int> get_attachment(std::vector<int>)':
transfer.cpp:9:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 |     for(int i=0;i!=source.size();++i){
      |                 ~^~~~~~~~~~~~~~~
transfer.cpp: In function 'std::vector<int> retrieve(std::vector<int>)':
transfer.cpp:23:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   23 |     for(int i=0;i!=data.size()-9;++i){
      |                 ~^~~~~~~~~~~~~~~
transfer.cpp:26:30: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |     for(int i=data.size()-9;i!=data.size();++i){
      |                             ~^~~~~~~~~~~~~
transfer.cpp:30:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |     for(int i=1;i!=ajuda.size();++i){
      |                 ~^~~~~~~~~~~~~~
transfer.cpp:34:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |     for(int i=0;i!=primario.size();++i){
      |                 ~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...