Witam! Napisałem taki oto kod do zadania odważniki z ostatniego ILOCAMP i nie przechodzi testów. Co ciekawe gdy ściągnąłem testy na windowsie program zwraca dobre wyniki, jednak na linuksie jest grupa testów dla których ten sam kod zwraca zupełnie inne wyniki (takie same jak na sprawdzaczce). Niestety są to błędy dotyczące wyników w plikach dość dużych więc sprawdzenie ręczne nie wchodzi w grę. Czym to może być spowodowane i jak to naprawić? Kod:
#include <iostream>
#include <cstdlib>
#include <cmath>
#define LL long long
#define REP(a,b) for(int a=0; a<b; a++)
#define FOR(a,b,c) for(int a=b; a < c; a++)
#define FORD(a,b,c) for(int a=b-1; a >= c; a--)
using namespace std;
const int stala=1000003;
int n,suma;
LL czarne[stala+1];
int szare[stala];
int lewy(int i){return czarne[i]-czarne[i-1];}
int prawy(int i){return czarne[n]-czarne[i];}
int main()
{
scanf("%d\n",&n);
FOR(i,1,n+1){
scanf("%d",&czarne[i]);
czarne[i]+=czarne[i-1];
}
szare[0]=0;
REP(i,n)
scanf("%d",&szare[i+1]);
sort(szare,szare+n+1);
REP(i,n){
if(*lower_bound(szare,szare+n+1,lewy(i)-prawy(i))==lewy(i)-prawy(i))//czy mozna wymienic
{
if(*lower_bound(szare,szare+n+1,2*lewy(i))==2*(lewy(i)))
{
printf("%d\n",i);return 0;}
}
}
printf("%d\n",n);
return 0;
}