제출 #308005

#제출 시각아이디문제언어결과실행 시간메모리
308005urd05Data Transfer (IOI19_transfer)C++14
100 / 100
191 ms2880 KiB
#include "transfer.h"
#include <bits/stdc++.h>
using namespace std;
 
vector<int> get_attachment(vector<int> source) {
	int n=source.size();
	int val=0;
	for(int i=0;i<n;i++) {
	    if (source[i]==1) {
	        val^=i+1;
	        val%=2*(n+1);
	    }
	}
	vector<int> ret;
	if (n==63) {
	    for(int i=0;i<6;i++) {
	        ret.push_back(val%2);
	        val/=2;
	    }
	}
	else {
	    for(int i=0;i<8;i++) {
	        ret.push_back(val%2);
	        val/=2;
	    }
	}
	int x=0;
	for(int i=0;i<ret.size();i++) {
	    x^=ret[i];
	}
	ret.push_back(x);
	return ret;
}
 
vector<int> retrieve(vector<int> data) {
    vector<int> ret;
	if (data.size()==70) {
	    int x=0;
	    int xval=0;
	    for(int i=63;i<70;i++) {
	        x^=data[i];
	        if (i!=69)
	            xval+=(data[i]<<(i-63));
	    }
	    if (x==1) {
	        for(int i=0;i<63;i++) {
	            ret.push_back(data[i]);
	        }
	        return ret;
	    }
	    int pos=-1;
	    int val=0;
	    for(int i=0;i<63;i++) {
	        if (data[i]==1) {
	            val^=i+1;
	        }
	    }
	    for(int i=0;i<63;i++) {
	        if ((val^(i+1))==xval) {
	            pos=i;
	            break;
	        }
	    }
	    for(int i=0;i<63;i++) {
	        ret.push_back(data[i]^(pos==i));
	    }
	}
	else {
	    int x=0;
	    int xval=0;
	    for(int i=255;i<264;i++) {
	        x^=data[i];
	        if (i!=263)
	            xval+=(data[i]<<(i-255));
	    }
	    if (x==1) {
	        for(int i=0;i<255;i++) {
	            ret.push_back(data[i]);
	        }
	        return ret;
	    }
	    int pos=-1;
	    int val=0;
	    for(int i=0;i<255;i++) {
	        if (data[i]==1) {
	            val^=i+1;
	        }
	    }
	    for(int i=0;i<255;i++) {
	        if ((val^(i+1))==xval) {
	            pos=i;
	            break;
	        }
	    }
	    for(int i=0;i<255;i++) {
	        ret.push_back(data[i]^(pos==i));
	    }
	}
	return ret;
}

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

transfer.cpp: In function 'std::vector<int> get_attachment(std::vector<int>)':
transfer.cpp:28:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |  for(int i=0;i<ret.size();i++) {
      |              ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...