Cod sursa(job #1582033)

Utilizator VasilescuVasilescu Eliza Vasilescu Data 27 ianuarie 2016 16:41:14
Problema Orase Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <stdio.h>

int d[1000000], l[1000000];

int ax(int x, int y){
    if(x<y)
       return y;
    else
       return x;
}

int axs(int x, int y){
   int cmax, mx, i, pz;
   cmax=x;
   mx=0;
   for(i=0; i<y; i++){
          if(l[i]<cmax && l[i]>mx){
            mx=l[i];
            pz=i;
        }
    }
    x=mx;
    return x;

}

int axd(int x, int y){
   int cmax, mx, i, pz;
   cmax=x;
   mx=0;
   for(i=0; i<y; i++){
          if(l[i]<cmax && l[i]>mx){
            mx=l[i];
            pz=i;
        }
    }
    return pz;

}

int main(){
    FILE *fin, *fout;
    fin=fopen("orase.in", "r");
    fout=fopen("orase.out", "w");

    int n, m, li, di, i, max, mx, poz, pz, sol;

    fscanf(fin, "%d%d", &m, &n);

    max=0;
    mx=0;
    for(i=0; i<n; i++){
        fscanf(fin, "%d%d", &di, &li);
        l[i]=li;
        d[i]=di;
        if(li>max){
            max=li;
            poz=i;
        }
    }
    for(i=0; i<n; i++){
          if(l[i]<max && l[i]>mx){
            mx=l[i];
            pz=i;
        }
    }

    if(d[poz]-d[pz]==0){
        mx=axs(mx, n);
        pz=axd(mx, n);
        }
    sol=max+mx+ax(m-d[poz], m-d[pz]);

    fprintf(fout, "%d\n", sol);

    fclose(fin);
    fclose(fout);

    return 0;
    }