Codice che va in execution timed out con gli esempi

#include <iostream>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>

using namespace std;

class FileReader {
	private:
	FileReader(const FileReader&fr){}
	int maxBufferSize,bufferSize,bufferPointer;int fileNo;char*buffer;
	void loadBuffer(){bufferSize=read(fileNo,buffer,maxBufferSize);bufferPointer=0;}
	inline char nextChar(){if(bufferPointer>=bufferSize)loadBuffer();return buffer[bufferPointer++];}
	bool skipSpaces(){char c;while(((c=nextChar())==' '||c=='\n'||c=='\t')&&c!='\0');if(c=='\0')return 0;bufferPointer--;return 1;}
	public:
	FileReader(const char*_name,int _bufferSize=150000){buffer=(char*)malloc(_bufferSize);fileNo=open(_name,O_RDONLY);maxBufferSize=_bufferSize;loadBuffer();}
	FileReader(int _fileNo,int _bufferSize=150000){buffer=(char*)malloc(_bufferSize);fileNo=_fileNo;maxBufferSize=_bufferSize;loadBuffer();}
	~FileReader(){free(buffer);close(fileNo);}
	int readInt(){return(int)readLongLong();}
	long long readLongLong(){long long n=0;int mul=1;char c;if(!skipSpaces())abort();c=nextChar();if(c=='+'||c=='-')mul=(c=='+')?1:-1;else bufferPointer--;do{c=nextChar();if(c>='0'&&c<='9')n=n*10+(c-'0');}while(c>='0'&&c<='9');return n*mul;}
	double readDouble(){double n=0;int mul=1,i=0,dotpos=0;char c;if(!skipSpaces())abort();c=nextChar();if(c=='+'||c=='-')mul=(c=='+')?1:-1;else bufferPointer--;do{i++;c=nextChar();if(c>='0'&&c<='9')n=n*10.0+(c-'0');if(c=='.')dotpos=i;}while((c>='0'&&c<= '9')||c=='.');if(dotpos>0)for(;dotpos<i-1;dotpos++)n/=10.0;return n*mul;}
	int readString(char*str){if(!skipSpaces())return str[0]=0;char c;int l=0;do{c=nextChar();str[l++]=c;}while(c!=' '&&c!='\n'&&c!='\t'&&c!='\0');str[--l]='\0';return l;}
	char readChar(){if(!skipSpaces())return'\0';return nextChar();}
};

int main()
{
    FileReader fr("input.txt");
    long long n = fr.readLongLong();
    long long d = fr.readLongLong();
    long long A[n];
    for(long long i=0;i<n;i++)
    {
        A[i] = fr.readLongLong();
    }

    int I, J, co = 0;
    for(I=n-1;I>=0;I--)
        {
            for(J=I-1;J>=0;J--)
            {
                if(A[I]-A[J]>=d)
                {
                    I--;
                    J = I-1;
                }
                if(A[I]-A[J]<d)
                {
                    co++;
                }


            }


        }
        cout << co << endl;


}
codice che si inceppa

hai simboli strani nel codice, probabilmente hai sbagliato a copy-pastarlo… Senza provare a compilarlo in locale non ti saprei dire.

Si il codice scritto sul forum non lo copia bene… comunque non so quale sia il problema perchè sugli esempi si inceppa, subtask 2 ultra veloce, subtask 3 lo stesso e si inceppa sulla quarta. In pratica non riesce a prendere l’ultimo numero dal file e il programma si inceppa. Ho compilato su visual studio con g++ e funziona, su codeblocks e replit non va.

A me con clang compila, che problema e’ btw?

è do not gather, la subtask 3 la fà in massimo 0.015 e l’esempio va in execution timed out

Il problema non è tanto il compilare (infatti anche a me compila) ma il programma arriva a prendere l’ultimo numero da file e non va più continua a girare senza fare nulla

Il problema e` il file reader che stai usando che si bugga se l’input non finisce con whitespace.
La differenza nei subtask immagino sia perche’ sono generati in modo diverso, alcuni fatti bene con la newline alla fine del file e altri senza.

Ok grazie proverò a cambiare il codice