Получение ошибки - Завершено с кодом выхода 3221225477 - PullRequest
0 голосов
/ 18 апреля 2020
#include<iostream>
#include<map>
#include<unordered_map>
#include<algorithm>
#include<string>
typedef long long ll;

using namespace std;

int main() {

    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif 

    multimap< ll, pair<ll,ll>, greater <ll> > mymap; 

    ll n,k,i,j,l=0,sum,temp;
    cin>>n>>k;
    vector<ll> s(n);
    vector<ll> c(n);
    vector<ll> d(n);
    vector<ll> e(n);

    for(i=0;i<n;i++) cin>>s[i]; 

    for(i=0;i<n;i++) cin>>c[i];  // SOME PROBLEM IS HERE!!///

    // for(i=0;i<n;i++) cout<<s[i]<<" "<<c[i];  

    for(i=0;i<n;i++) mymap.insert(make_pair(s[i],make_pair(c[i],i)));
    i=0;
    for (auto it=mymap.begin() ; it!=mymap.end() ; i++,it++){
         d[i]=(it)->second.first;
         s[i]=(it)->second.second;
    }    
    sort(c.rbegin(), c.rend());     // s,c,d,e

    for(i=0;i<n;i++){
        auto it=find(c.begin(), c.end(),d[i]);
        temp=d[i];
        c.erase(it);
        sum=0;
        j=0;
        auto yt=c.begin();

        while(j!=k && yt!=c.end())
        {
            sum=sum+c[j];
            j++;
            yt++;
        }

        e[s[i]]=sum+temp;
    }
    for(i=0;i<n;i++)
    cout<<e[i]<<" ";


  }

This is the problem I am trying to solve

Этот мой код иногда компилируется, чтобы ничего не выводить, или выдает ошибку: [Завершено в 4.5s с кодом выхода 3221225477]

Я следовал за подобной помеченной проблемой, но все, что было указано в них, кажется, не проблема с этим кодом. Я попытался поместить операторы печати в код, но ни одна не работала после первой для l oop (я прокомментировал область в коде), я также следовал за документацией multimap, но все еще без каких-либо улучшений.

В этом коде с вводом

4 2
4 5 9 7
1 2 11 33

Я ожидаю вывод как

1 3 46 36 

Когда я отправил это в Codeforces Online Judge, это вызвало ошибку времени выполнения с описанием.

Diagnostics
Diagnostics detected issues [cpp.clang++-diagnose]: =================================================================
==3480==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x11e00030 at pc 0x001529a8 bp 0x1087f434 sp 0x1087f430
WRITE of size 8 at 0x11e00030 thread T0
    #0 0x1529a7 in main K:\invoker-prod\work\codeforces6\9b5b62769a35581e24568bbc4cf484df\compile-e4b70584810488eac396a75d667b010b\p71.cpp:35
    #1 0x1fc88f in __scrt_common_main_seh f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283
    #2 0x756b343c in BaseThreadInitThunk+0x11 (C:\Windows\syswow64\kernel32.dll+0x1343c)
    #3 0x77da9831 in RtlInitializeExceptionChain+0x62 (C:\Windows\SysWOW64\ntdll.dll+0x39831)
    #4 0x77da9804 in RtlInitializeExceptionChain+0x35 (C:\Windows\SysWOW64\ntdll.dll+0x39804)

0x11e00030 is located 0 bytes to the right of 32-byte region [0x11e00010,0x11e00030)
allocated by thread T0 here:
    #0 0x1fae9a in operator new C:\src\llvm_package_1000-final\llvm-project\compiler-rt\lib\asan\asan_new_delete.cpp:99
    #1 0x1699b3 in std::_Allocate C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xmemory0:93
    #2 0x1a24a5 in std::allocator<long long>::allocate C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\xmemory0:946
    #3 0x1a1081 in std::vector<long long,std::allocator<long long> >::_Buy C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\vector:1978
    #4 0x157ba8 in std::vector<long long,std::allocator<long long> >::vector C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\include\vector:696
    #5 0x15183a in main K:\invoker-prod\work\codeforces6\9b5b62769a35581e24568bbc4cf484df\compile-e4b70584810488eac396a75d667b010b\p71.cpp:24
    #6 0x1fc88f in __scrt_common_main_seh f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283
    #7 0x756b343c in BaseThreadInitThunk+0x11 (C:\Windows\syswow64\kernel32.dll+0x1343c)
    #8 0x77da9831 in RtlInitializeExceptionChain+0x62 (C:\Windows\SysWOW64\ntdll.dll+0x39831)
    #9 0x77da9804 in RtlInitializeExceptionChain+0x35 (C:\Windows\SysWOW64\ntdll.dll+0x39804)

SUMMARY: AddressSanitizer: heap-buffer-overflow K:\invoker-prod\work\codeforces6\9b5b62769a35581e24568bbc4cf484df\compile-e4b70584810488eac396a75d667b010b\p71.cpp:35 in main
Shadow bytes around the buggy address:
  0x323bffb0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x323bffc0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x323bffd0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x323bffe0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x323bfff0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x323c0000: fa fa 00 00 00 00[fa]fa 00 00 00 00 fa fa 00 00
  0x323c0010: 00 00 fa fa 00 00 00 fa fa fa 00 00 00 fa fa fa
  0x323c0020: 00 00 00 00 fa fa 00 00 00 fa fa fa 00 00 02 fa
  0x323c0030: fa fa 00 00 07 fa fa fa 00 00 00 06 fa fa 00 00
  0x323c0040: 00 fa fa fa 00 00 00 01 fa fa 00 00 06 fa fa fa
  0x323c0050: 00 00 01 fa fa fa 00 00 00 05 fa fa 00 00 00 03
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==3480==ABORTING

Пожалуйста, помогите мне с этим. Спасибо

1 Ответ

0 голосов
/ 18 апреля 2020

Вы должны добавить vector заголовочный файл #include <vector>. Тем не менее после этого вы получите TLE. Здесь - я отправил ваш код, добавив заголовок vector.

...