Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <assert.h>
- #include <iostream>
- #include <map>
- #include <stdlib.h>
- #define MAXN 100000
- using namespace std;
- int ricarica(int N, int M, int A[], int B[]) {
- int carica = 1;
- int necessari = 1;
- int ultima_posizione = 1;
- for (int i = 0; i < N; i++) {
- int inizio = A[i];
- int fine = B[i];
- //cout << "Punti in " << ultima_posizione << " = " << carica << endl;
- int costo = inizio - ultima_posizione;
- //cout << "Costo per spostarsi da " << ultima_posizione << " a " << inizio << " = " << costo << " punti" << endl;
- int da_aggiungere = 0;
- if (costo >= carica) {
- da_aggiungere = costo - carica + 1;
- necessari += da_aggiungere;
- carica -= da_aggiungere;
- // cout << "Servono altri " << da_aggiungere << " punti" << endl;
- }
- int valore = fine-inizio+1;
- carica += valore;
- //cout << "Ricarica di " << valore << " punti, carica = " << carica << endl;
- ultima_posizione = fine + 1;
- //system("pause");
- }
- //cout << necessari << endl;
- return necessari;
- }
- int A[MAXN], B[MAXN];
- int main() {
- FILE *fr, *fw;
- int N, M, i;
- fr = fopen("input.txt", "r");
- fw = fopen("output.txt", "w");
- assert(2 == fscanf(fr, "%d %d", &N, &M));
- for(i=0; i<N; i++)
- assert(2 == fscanf(fr, "%d %d", &A[i], &B[i]));
- fprintf(fw, "%d\n", ricarica(N, M, A, B));
- fclose(fr);
- fclose(fw);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement