페이지

1700번: 멀티탭 스케줄링

https://www.acmicpc.net/problem/1700


#include<stdio.h>
#include<algorithm>
using namespace std;
int n, k, p[20], pcnt, a[100];
int main() {
    scanf("%d %d", &n, &k);
    for (int i = 0; i < k; i++)
        scanf("%d", &a[i]);
    int res = 0;
    for (int i = 0; i < k; i++) {
        int j;
        for (j = 0; j < pcnt; j++)
            if (p[j] == a[i]) break;
        if (j == n) {
            int maxi = 0, tp, pos;
            for (j = 0; j < pcnt; j++) {
                for (tp = i + 1; tp < k &&a[tp] != p[j]; tp++);
                if (tp > maxi) maxi = tp, pos = j;
            }
            p[pos] = a[i];
            res++;
        }
        else if (j == pcnt) p[pcnt++] = a[i];
    }
    printf("%d", res);
    return 0;
}

댓글 없음 :

댓글 쓰기