EQ - Electronic queue

Tác giả: hieult

Ngôn ngữ: C++

#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<cassert>
#include<ctime>
#include<algorithm>
#include<iterator>
#include<iostream>
#include<cctype>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<list>
//include<conio.h>
#define ep 0.000000001
#define maxn 10011
#define oo 1000000000
#define ooo 1ll << 62
//#define mod 111539786
#define TR(c, it) for(typeof((c).begin()) it=(c).begin(); it!=(c).end(); it++)
#define fi first 
#define se second
#define max_size 4
double const PI=4*atan(1);

typedef long long int64;

using namespace std;

typedef pair<int, int> II;
typedef vector<int> VI;
typedef vector<II> VII;
typedef vector<VI> VVI;
typedef vector<VII> VVII;

int test, n, m , f[55], a , num, vitri, MIN,start,finish;
long long kq;

int main(){
   // freopen("input.in","r",stdin); 
   // freopen("output.out","w",stdout);
    scanf("%d",&test);
    while(test --){
        scanf("%d %d",&n,&m);
        memset(f, 0, sizeof(f));
        kq = 0;
        for(int i = 0; i < m; i++){
            scanf("%d %d",&a,&num);
            vitri = 0, MIN = oo;
            for(int j = 1; j <= n; j++){
                if(f[j] < MIN){
                    vitri = j;
                    MIN = f[j];
                }
            }
            start = max(f[vitri], a);
            finish = start + num + 5;
            kq += (long long)finish - a;
            f[vitri] = finish;
           // printf("%d %d\n",finish,a);
        }
        printf("%lld\n",kq);
    }
   // getch();
}




Download