제출 #78560

#제출 시각아이디문제언어결과실행 시간메모리
78560MrTEKJob Scheduling (CEOI12_jobs)C++14
100 / 100
241 ms13752 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long int ll;
typedef pair<int,int> ii;

const int N = 1e5 + 5;

vector <int> v[N];

int n,d,m;

bool check(int mach) {
  queue <int> Q;
  for (int i = 1 ; i <= n ; i++) {
    int temp = mach;
    while(Q.empty() == false && temp) {
      Q.pop();
      temp--;
    }
    for (int j = 1; j <= max(0,(int)v[i].size() - temp) ; j++)
      Q.push(i);
    if (Q.empty() == false && i+ 1 - Q.front() > d)
      return false;
  }
  return Q.empty() == true;
}

void write(int mach) {
  queue <int> Q;
  for (int i = 1 ; i <= n ; i++) {
    int temp = mach;
    while(Q.empty() == false && temp) {
      cout << Q.front() << " ";
      Q.pop();
      temp--;
    }
    int t = 0;
    for (int j = 0; j < max(0,(int)v[i].size() - temp) ; j++) {
      Q.push(v[i][j]);
      t++;
    }
    for ( ; t < v[i].size() ; t++)
      cout << v[i][t] << " ";
    cout << "0\n";
  }
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL); cout.tie(NULL);
  cin >> n >> d >> m;
  for (int i = 1 ; i <= m ; i++) {
    int a;
    cin >> a;
    v[a].push_back(i);
  }
  int l = 1,r = m;
  while(l < r) {
    int mid = (l + r - 1) / 2;
    if (check(mid))
      r = mid;
    else
      l = mid + 1;
  }
  cout << l << endl;
  write(l);
}

컴파일 시 표준 에러 (stderr) 메시지

jobs.cpp: In function 'void write(int)':
jobs.cpp:44:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for ( ; t < v[i].size() ; t++)
             ~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...