Cod sursa(job #420448)

Utilizator vladiiIonescu Vlad vladii Data 19 martie 2010 10:17:18
Problema Orase Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
using namespace std;

int N, M, D[50001], L[50001];

int Verifica(int dist) {
    int i, j, p, q;
    for(i=1; i<=50000; i++) {
         p=rand()%N+1;
         q=rand()%N+1;
         //verific distanta dintre p si q
         j=abs(D[p]-D[q])+L[p]+L[q];
         if(j>=dist) { return 1; }
    }
    return 0;
}

int main() {
    srand(time(NULL));
    FILE *f1=fopen("orase.in", "r"), *f2=fopen("orase.out", "w");
    int i, j, p, q, sol;
    fscanf(f1, "%d%d", &M, &N);
    for(i=1; i<=N; i++) {
         fscanf(f1, "%d%d", &D[i], &L[i]);
    }
    int ls=0, ld=3000000;
    while(ls<=ld) {
         int mij=(ls+ld)>>1;
         if(Verifica(mij)) {
              sol=mij;
              ls=mij+1;
         }
         else {
              ld=mij-1;
         }
    }
    fprintf(f2, "%d\n", sol);
    fclose(f1); fclose(f2);
    return 0;
}