Formula1 subtask 2

Non riesco a capire perchè questo codice non funzioni per almeno il secondo subtask del problema formula1 CMSocial - a social coding app

#include <bits/stdc++.h>
#define ll long long
using namespace std;
struct poly{
    int a,b,c,index;
};
int t;
bool operator < (poly P, poly Q){
    int p = P.a*t*t + P.b*t + P.c;
    int q = Q.a*t*t + Q.b*t + Q.c;
    if(p == q) return P.index > Q.index;
    return (p<q);
}
bool operator > (poly P, poly Q){
    int p = P.a*t*t + P.b * t + P.c;
    int q = Q.a*t*t + Q.b*t + Q.c;
    if(p == q) return P.index < Q.index;
    return (p>q);
}

vector<poly> input;

int main(){
    int n;
    cin >> n;
    input.resize(n);
    for(int i = 0; i < n; i++){
        cin >> input[i].a >> input[i].b >> input[i].c;
        input[i].index = i;
    }
    int q;
    cin >> q;
    for(int i = 0; i < q; i++){
        int p;
        cin >> p >> t;
        sort(input.begin(), input.end());
        cout << input[n-p].index + 1 << endl;
    }
}

Anche se vale N \le 10, può comunque succedere che a_i * t^2 + b_i * t + c_i > 2^{32} :grin:

1 Mi Piace