Код:
#include <bits/stdc++.h>
using namespace std;
#define fn(i,n) for(int i=0; i< int(n); i++)
const int INF=1e9+1;
double Pi=3.14159265359;
#define F first
#define S second
#define all(a) a.begin(),a.end()
typedef long long ll;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ifstream fin("input.txt");
ofstream fout("output.txt");
int n,m;
fin>>n>>m;
vector<int> a(n),b(m);
fn(i,n)fin>>a[i];
fn(i,m)fin>>b[i];
vector<int> ans;
bool last;
int i=a.size()-1,j=b.size()-1;
while(!(i==j && i==-1)){
bool tp1=((i%2==1 || i==-1)?0:1);
bool tp2=((j%2==1 || j==-1)?0:1);
bool tp=(tp1!=tp2?1:0);
int mn;
if(i>=0 && j>=0)
mn=min(a[i],b[j]);
else mn=(i!=-1?a[i]:b[j]);
if((i==a.size()-1 && j==b.size()-1) || tp!=last)
ans.push_back(mn);
else
ans[ans.size()-1]+=mn;
if(mn==a[i])i--;
else a[i]-=mn;
if(mn==b[j])j--;
else b[j]-=mn;
last=tp;
}
if(last==false)
ans.resize(ans.size()-1);
reverse(all(ans));
fn(z,ans.size()){
if(z==ans.size()-1)
fout<<ans[z];
else
fout<<ans[z]<<" ";
}
return 0;
}
При вводе теста:
3 4
12550 68316 99658
79647 97673 35501 43437
В файл input.txt программа выдает ошибку 0xC0000005 на стадии удаления вектора.
Как избавиться от данной ошибки?
Воткнем в ваш код немного assert
'ов и обнаружим тут же выход за пределы диапазона:
if(mn==a[i])i--;
else {
assert(i < a.size());
a[i]-=mn;
}
А почему и как это исправить - это вы уж в своем C00l-коде разберитесь самостоятельно. Понимать, что именно он делает, только по вашему исходнику (в котором уже найдена как минимум одна ошибка), без описания поставленной задачи - увольте, телепатия сегодня с утра по погодным условиям не работает... :)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пишу текстовую игруПеренес общие функции в другой класс и возникла ошибка
Сложить 50 чиселЕсли сложение не удалось то написать сообщение об ошибке
Как передать аргумент функции в std::thread по ссылке? Хоть моя функция принимает параметр по ссылке, но похоже, что объекты всё равно разные