답안 #357884

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
357884 2021-01-24T21:42:21 Z Ahmad_Hasan Data Transfer (IOI19_transfer) C++17
0 / 100
13 ms 4860 KB
#include <bits/stdc++.h>
#include "transfer.h"
using namespace std;
 
vector<int> get_attachment(vector<int>src){
    if(1){
      int n=src.size();
      for(int i=0;i<n;i++)src.push_back(src[i]);
      return src;
    }
        
    long long p=31;
    long long mod=1e9+7;
    long long ppow=1ll;
    long long hsh=0ll;
    int n=src.size();
    for(int i=0;i<n;i++){
        hsh+=src[i]*ppow;
        hsh%=mod;
        ppow*=p;
        ppow%=mod;
    }
    vector<int>ret(30);
    for(int i=0;i<30;i++)ret[i]=!!(hsh&(1<<i));
 
    return ret;
}
 
vector<int> retrieve(vector<int>data){
    vector<int>ret;
    if(1){
        int n=data.size();
        for(int i=n/2;i<n;i++)
            ret.push_back(data[i]);
    }else{
 
        long long p=31;
        long long mod=1e9+7;
        long long ppow=1ll;
        long long hsh=0ll;
        int n=data.size()-30;
        vector<int>ret;
        for(int i=0;i<n;i++){
            hsh+=data[i]*ppow;
            hsh%=mod;
            ppow*=p;
            ppow%=mod;
        }
        int f=0;
        for(int i=n;i<data.size();i++){
            if(data[i]!=!!(hsh&(1<<(i-n))))
                f=1;
        }
        if(!f){
            for(int i=0;i<n;i++){
                ret.push_back(data[i]);
            }
            return ret;
        }
        for(int i=0;i<n;i++){
            data[i]=!data[i];
 
            p=31;
            mod=1e9+7;
            ppow=1ll;
            hsh=0ll;
            for(int i=0;i<n;i++){
                hsh+=data[i]*ppow;
                hsh%=mod;
                ppow*=p;
                ppow%=mod;
            }
            int f=0;
            for(int i=n;i<data.size();i++){
                if(data[i]!=!!(hsh&(1<<(i-n))))
                    f=1;
            }
            if(!f){
                for(int i=0;i<n;i++){
                    ret.push_back(data[i]);
                }
                return ret;
            }
 
            data[i]=!data[i];
        }
 
    }
    return ret;
}

Compilation message

transfer.cpp: In function 'std::vector<int> retrieve(std::vector<int>)':
transfer.cpp:50:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |         for(int i=n;i<data.size();i++){
      |                     ~^~~~~~~~~~~~
transfer.cpp:74:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   74 |             for(int i=n;i<data.size();i++){
      |                         ~^~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 1140 KB WA in grader: wrong source retrieval
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 13 ms 4860 KB WA in grader: wrong source retrieval
2 Halted 0 ms 0 KB -